如何使用开放XML SDK查找和替换word文档页脚中的文本?

时间:2017-11-17 22:20:33

标签: c# asp.net c#-4.0

我尝试了以下代码。如果它是普通文本并且左缩进打开,则它可以工作。如果我有带方括号的文本,它会破坏docx,如果我将文本在页脚中心对齐,则替换不起作用。请帮我。这是我的代码。

    using (var file = WordprocessingDocument.Open(targetFileName, true))
    {
    string content = null;
    using (StreamReader reader = new StreamReader(
    file.MainDocumentPart.FooterParts.First().GetStream()))
    {
        content = reader.ReadToEnd();
    }
    Regex expression = new Regex("[name]");
    content = expression.Replace(content,"replacement word");
    using (StreamWriter writer = new StreamWriter(             
    file.MainDocumentPart.FooterParts.First().GetStream(FileMode.Create)))
    {
         writer.Write(content);
    }                
       file.MainDocumentPart.Document.Save();
    }

我想替换页脚中的多个单词,如[name] | [email] | [电话]

当要替换的文本中包含[]时,文档将被损坏。

提前致谢

1 个答案:

答案 0 :(得分:0)

上面的代码中发生的事情是,“ n”,“ a”,“ m”,“ e”的每个实例都被整个字符串“ replacement word”替换。 .docx文件中的xml标头包含这些字符,当Regex运行Replace函数时,这些字符将被覆盖并损坏。

可以通过如下转义[]字符来解决此问题:

Regex表达式=新的Regex(“ \\ [name \\]”);