无法以MS Word读取openXML表

我正在尝试将一个单词文件中的所有表读入一个列表,尽管由于某种原因,无论文件中有多少个表,计数都是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。我在做什么错?


蓝山帝景
浏览 147回答 3
3回答

慕村225694

如果您要做的只是读取表,则无需打开文档进行编辑(您当前正在执行的操作)在WordprocessingDocument.Open()中将第二个参数设置为false以打开以进行读取。这样可以避免与在“更新”模式下多次打开一个条目有关的错误(无论如何我都认为这是您遇到的错误)。基于聊天的解决方案真正的罪魁祸首是在检查文档中的表时使用了错误的OpenXml命名空间。查找Table类型的后代时,传入的类型必须为OpenXml。文字处理表,不是OpenXml。图纸。表我不知道OpenXml.Drawing.Table用于什么类型的对象。我将在另一个问题中对此进行询问。

慕勒3428872

您可能引用的是错误的Table。这应该工作:var&nbsp;tables&nbsp;=&nbsp;doc.MainDocumentPart.Document.Descendants<DocumentFormat.OpenXml.Wordprocessing.Table>().ToList();

哈士奇WWW

阿努开始在评论中给出了答案。问题是我使用了不正确的命名空间。我不是使用DocumentFormat.OpenXml.Wordprocessing.Table,而是使用DocumentFormat.OpenXml.Drawing.Table
打开App,查看更多内容
随时随地看视频慕课网APP