【发布时间】:2019-03-15 20:00:54
【问题描述】:
我已经差不多 3 天在寻找这个问题的解决方案了。我有一个带有占位符的 Word 文档。我们有自己的实现,如何解析 word 文档模板并用内容替换占位符。但是我遇到了一个问题,该段落列表不包含 word 文档中的所有内容。 我得到了 OpenXmlPartRootElement 的所有 Paragraph 类型后代。
var paragraphs = document.Descendants().OfType<Paragraph>().ToList();
然后我正在检查特定的占位符。
paragraphs.Count(x => x.InnerText.Contains("some placeholder"));
文档中有 3 个相同的占位符,但此语句仅找到其中两个。这会破坏所有文档,因此它被解析了一半。
Word 文档中的占位符和文本存储在表格中。
这是库中的某种错误还是我应该考虑以不同的方式获取内容?
【问题讨论】:
-
您需要提供有关本文档结构的更多信息。没有“找到”的段落在哪里?例如,它们是否在文本框(绘图对象)中?不知道这一点,就不可能提供帮助。尝试查看原始 Word Open XML 并找到这些占位符。
-
可能与此处描述的问题有关 - stackoverflow.com/questions/28697701/openxml-tag-search/…
-
文档的结构只有一个非常大的简单表格,有 4 列。我们稍微改变了解析器的实现。但在那之后,解析器仍然没有找到一些文本。移动文本、删除行和添加新行很有帮助。所以 Word 表肯定有问题,我仍然无法弄清楚。
标签: c# ms-word openxml openxml-sdk