我正在使用c#4.0并打开xml sdk 2.0来访问Word文件。为此,我想根据给定的文本检索段落。如果段落包含我的文本,则检索包含该文本的段落。
例如: 鉴于Word是:TEST
检索包含单词“TEST”
的段落我想在段落中搜索给定的Word。如果发现任何匹配,那么我想显示那些方法。如果未找到匹配项,则无需获取段落。
我怎么做?
答案 0 :(得分:5)
word文档的主要内容存储在body元素中。 在最简单的级别,可以使用对文档执行的Linq查询来定位段落:
using(WordprocessingDocument document = WordprocessingDocument.Open(documentStream, true)){
foreach(Paragraph p in document.MainDocumentPart.Document.Body.Descendants<Paragraph>().Where<Paragraph>(p => p.InnerText.Equals("SOME TEXT")){
// Do something with the Paragraphs.
}
}
但是我会建议问题比这复杂一点。在每个段落下,可能存在多个包含一串单词的Run(基本上是一个句子)。用户输入单词“SOME TEXT”的位置很可能还包含其他运行。
但这应该能指出你正确的方向。