如何使用open xml和c#4.0从word文件中检索基于内容的段落?

时间:2011-03-21 17:46:30

标签: c#-4.0 openxml openxml-sdk

我正在使用c#4.0并打开xml sdk 2.0来访问Word文件。为此,我想根据给定的文本检索段落。如果段落包含我的文本,则检索包含该文本的段落。

例如: 鉴于Word是:TEST

检索包含单词“TEST”

的段落

我想在段落中搜索给定的Word。如果发现任何匹配,那么我想显示那些方法。如果未找到匹配项,则无需获取段落。

我怎么做?

1 个答案:

答案 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”的位置很可能还包含其他运行。

但这应该能指出你正确的方向。