我正在尝试将一个单词文件中的所有表读入一个列表,尽管由于某种原因,无论文件中有多少个表,计数都是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用于什么类型的对象。我将在另一个问题中对此进行询问。
慕勒3428872
TA贡献1848条经验 获得超6个赞
您可能引用的是错误的Table
。这应该工作:
var tables = doc.MainDocumentPart.Document.Descendants<DocumentFormat.OpenXml.Wordprocessing.Table>().ToList();
哈士奇WWW
TA贡献1799条经验 获得超6个赞
阿努开始在评论中给出了答案。问题是我使用了不正确的命名空间。我不是使用DocumentFormat.OpenXml.Wordprocessing.Table,而是使用DocumentFormat.OpenXml.Drawing.Table
- 3 回答
- 0 关注
- 146 浏览
添加回答
举报
0/150
提交
取消