未在 MS word 中读取 openXML 表

openXML tables not being read in MS word

我正在尝试将 word 文件中的所有表格读入列表,但由于某种原因无论文件中有多少表格,计数都是 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);

tables.Count = 0.我做错了什么?

如果您只想阅读 表格,则无需打开文档进行编辑(这是您当前正在做的)

将WordprocessingDocument.Open()中的第二个参数设置为false,即可打开读取。这将防止与在更新模式下多次打开条目相关的错误(我假设这就是你 运行 无论如何)。

基于聊天的解决方案

真正的罪魁祸首与检查文档中的表格时使用了错误的 OpenXml 命名空间有关。查找 Table 类型的后代时,传入的类型必须是 OpenXml。Wordprocessing。Table,NOT OpenXml.绘图.Table

我不知道 OpenXml.Drawing.Table 用于什么类型的对象。我会在一个单独的问题中问这个问题。

您可能引用了错误的 Table。这应该有效:

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

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