编程语言
首页 > 编程语言> > c#-使用OpenXML SDK用换行符(换行符)替换docx文件上的文本

c#-使用OpenXML SDK用换行符(换行符)替换docx文件上的文本

作者:互联网

我正在尝试使用C#用换行符(换行符)替换整个DOCX文件上的特定文本字符串.

我要搜索的文本字符串可以在文件的段落或表格中.

我目前正在使用下面的代码替换文本.

using (WordprocessingDocument doc = WordprocessingDocument.Open("yourdoc.docx", true))
{
  var body = doc.MainDocumentPart.Document.Body;

  foreach (var text in body.Descendants<Text>())
  {
    if (text.Text.Contains("##Text1##"))
    {
      text.Text = text.Text.Replace("##Text1##", Environment.NewLine);
    }
  }
}

问题:运行此代码时,输​​出DOCX文件的文本替换为空格(即“”)而不是换行符.

如何更改此代码以使其正常工作?

解决方法:

尝试使用break.检查此链接上的示例.您只需要附加一个Break

段落,智能标签,超链接都在Run中.所以也许您可以尝试使用approach.
要更改表中的文本,您将必须使用approach.再次,该文本始终位于“运行”中.

如果您说的是替换仅替换为空字符串,我会尝试这样做:

using (WordprocessingDocument doc =
                WordprocessingDocument.Open(@"yourpath\testdocument.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("text-to-replace"))
                        {
                            text.Text = text.Text.Replace("text-to-replace", "");
            run.AppendChild(new Break());
                        }
                    }
                }
            }
        }

标签:openxml,docx,c,ms-word,openxml-sdk
来源: https://codeday.me/bug/20191121/2049740.html