我正在尝试替换 docx 文件中的单词,如下所述:
public static void SearchAndReplace(string document)
{
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(document, true))
{
string docText = null;
using (StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
{
docText = sr.ReadToEnd();
}
Regex regexText = new Regex("Hello world!");
docText = regexText.Replace(docText, "Hi Everyone!");
using (StreamWriter sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
{
sw.Write(docText);
}
}
}
这很好用,只是有时对于文档中的 SomeTest 你会得到类似的东西:
<w:t>
Some
</w:t>
</w:r>
<w:r w:rsidR="009E5AFA">
<w:rPr>
<w:b/>
<w:color w:val="365F91"/>
<w:sz w:val="22"/>
</w:rPr>
<w:t>
Test
</w:t>
</w:r>
当然更换失败。也许有一种解决方法可以使 docx 中的某些单词牢不可破?或者也许我做错了替换?