为了账号安全,请及时绑定邮箱和手机立即绑定

无法以MS Word读取openXML表

无法以MS Word读取openXML表

C#
蓝山帝景 2021-05-13 14:17:31
我正在尝试将一个单词文件中的所有表读入一个列表,尽管由于某种原因,无论文件中有多少个表,计数都是0。这是我的代码。public void FindAndReplace(string DocPath){  using (WordprocessingDocument doc = WordprocessingDocument.Open(DocPath, true))  {    using (StreamReader reader = new StreamReader(doc.MainDocumentPart.GetStream()))    {      //Text titlePlaceholder = doc.MainDocumentPart.Document.Body.Descendants<Text>().Where((x) => x.Text == "Compliance Review By:").First();      List<Table> tables = doc.MainDocumentPart.Document.Descendants<Table>().ToList();      System.Console.WriteLine(tables.Count);table.Count =0。我在做什么错?
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

如果您要做的只是读取表,则无需打开文档进行编辑(您当前正在执行的操作)

在WordprocessingDocument.Open()中将第二个参数设置为false以打开以进行读取。这样可以避免与在“更新”模式下多次打开一个条目有关的错误(无论如何我都认为这是您遇到的错误)。

基于聊天的解决方案

真正的罪魁祸首是在检查文档中的表时使用了错误的OpenXml命名空间。查找Table类型的后代时,传入的类型必须为OpenXml。文字处理表不是OpenXml。图纸。表

我不知道OpenXml.Drawing.Table用于什么类型的对象。我将在另一个问题中对此进行询问。


查看完整回答
反对 回复 2021-05-29
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

您可能引用的是错误的Table。这应该工作:

var tables = doc.MainDocumentPart.Document.Descendants<DocumentFormat.OpenXml.Wordprocessing.Table>().ToList();



查看完整回答
反对 回复 2021-05-29
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

阿努开始在评论中给出了答案。问题是我使用了不正确的命名空间。我不是使用DocumentFormat.OpenXml.Wordprocessing.Table,而是使用DocumentFormat.OpenXml.Drawing.Table


查看完整回答
反对 回复 2021-05-29
  • 3 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信