使用OpenXMLSDK将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);
    }
  }
}

ISSUE:当我运行此代码时,输出DOCX文件的文本用空格(即")代替了换行符。

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

试着休息一下。请查看此链接上的示例。你只需要附加一个中断

段落、智能标签、超链接都在Run中。所以也许你可以试试这种方法。要更改表中的文本,必须使用这种方法。同样,文本总是在Run中。

如果你说替换只是替换一个空字符串,我会试试这个:

using (WordprocessingDocument doc =
                WordprocessingDocument.Open(@"yourpathtestdocument.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());
                        }
                    }
                }
            }
        }

不要添加换行符,而是尝试制作两个段落,一个在"要替换的文本"之前,另一个在后面。这样做会自动在两段之间添加换行符。

text.PParent.Append(new DocumentFormat.OpenXml.Wordprocessing.Break());

// Open a WordprocessingDocument for editing using the filepath.
using (WordprocessingDocument wordprocessingDocument = WordprocessingDocument.Open(filepath, true))
{
 // Assign a reference to the existing document body.
 Body body = wordprocessingDocument.MainDocumentPart.Document.Body;
 //itenerate throught text
 foreach (var text in body.Descendants<Text>())
 {
   text.Parent.Append(new Text("Text:"));
   text.Parent.Append(new Break());
   text.Parent.Append(new Text("Text"));
 }
}

这将返回:

文本:
文本:

相关内容

  • 没有找到相关文章

最新更新