如何使用openxml在ASP.NET MVC项目中打开docx文件来覆盖某些文本

问题描述 投票:1回答:1

我已经为该解决方案进行了大量搜索,但找不到任何解决方案。

我在MVC项目文件夹中有一个.docx文件,我想打开该文件以覆盖一些文本,但我无法这样做。

在项目文件夹中,我有一个Template文件夹,在该文件夹中有一个我要打开的genrated.docx文件。这是我的代码:

using (WordprocessingDocument doc = WordprocessingDocument.Open
    (@"~/Template/genrated.docx",true))
{
    var body = doc.MainDocumentPart.Document.Body;
    var paras = body.Elements<Paragraph>();

    foreach (var para in paras)
    {
        foreach (var run in para.Elements<Run>())
        {
            foreach (var text in run.Elements<Text>())
            {
                if (text.Text.Contains("to-replace"))
                {
                    text.Text = text.Text.Replace("to-replace", "replace-with");
                    run.AppendChild(new Break());
                }
            }
        }
    }
}

请帮助我...

asp.net-mvc openxml openxml-sdk
1个回答
0
投票

您用于替换文本的简单方法仅在简单情况下有效。不幸的是,当您使用Microsoft Word编辑模板时,“替换”文本可能会分成多次运行。然后,这意味着如果仅在单个Text实例中查找文本,则找不到“要替换”的文本。

下面的单元测试演示了通过创建一个包含两个段落的文档,一个文档包含一个带有文本“要替换”的Text实例,另一个文档将同一文本分为两个Run和[C0 ]实例。

Text
© www.soinside.com 2019 - 2024. All rights reserved.