使用OpenXML替换Word文档中的模板字段

时间:2018-01-25 23:14:32

标签: c# azure openxml

我正在尝试在基于Azure应用服务的应用程序中创建一个使用OpenXML的模板系统(因此没有Interop),并且遇到了让它运行的问题。这是我目前正在使用的代码(内容是一个字节数组):

using(MemoryStream stream = new MemoryStream(contents))
{
    using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(stream, true))
    {
        string docText = null;

        using (StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
        {
            docText = sr.ReadToEnd();
        }

        Regex regexText = new Regex("<< Company.Name >>");
        docText = regexText.Replace(docText, "Company 123");

        using (StreamWriter sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
        {
            sw.Write(docText);
        }

        wordDoc.Save();
    }

    updated = stream.ToArray();
}

搜索文本未找到/替换,我假设是因为所有内容都单独存储在XML中,但我如何更换这样的字段呢?

由于 莱恩

1 个答案:

答案 0 :(得分:0)

使用OpenXML SDK,您可以使用此SearchAndReplace - Youtube,请注意,它是一个屏幕投射,显示了可用于完成多个<w:run>元素替换的算法。

另一种方法是使用纯.NET解决方案,例如Find and Replace text in a Word document

最后,最简单直接的方法是使用其他一些库,例如检查Find and Replace with GemBox.Document的这个示例。