如何使用 OpenXMLPowerTools 将换行符插入到 Word (docx) 文档中?

How to insert line break into Word (docx) document using OpenXMLPowerTools?

我正在编写一个基于模板生成 Word 文档的库。一些文本需要用另一个文本替换。一切似乎都正常,有一个 TextReplacer class 可以执行替换。

当我需要用多行文本替换文本的单行部分时,情况变得更糟。 \n\r\n 等换行符只是作为文本粘贴。我知道这是预期的,因为多行文本必须在 document.xml.

中成为单独的标签(<w.p>..</w.p>,我想)

我认为简单的解决方案是在保存之前用中断标记替换文档中的所有 \n\r\n。我可以用 string.Replace() 来做到这一点,但我认为这不是最好的方法。如果可能的话,我想使用一些内置的 OpenXMLPowerTools 库功能。或者其他(免费)OpenXML 库。

我最终得到了这个:

public static void ReplaceNewLinesWithBreaks(XDocument xDoc)
{
    var textWithBreaks = xDoc.Descendants(W.t).Where(t => t.Value.Contains("\r\n"));
    foreach (var textWithBreak in textWithBreaks)
    {
        var text = textWithBreak.Value;
        var split = text.Replace("\r\n", "\n").Split(new[] {"\n"}, StringSplitOptions.None);

        textWithBreak.Value = string.Empty;
        foreach (var s in split)
        {
            textWithBreak.Add(new XElement(W.t, s));
            textWithBreak.Add(new XElement(W.br));
        }
        textWithBreak.Descendants(W.br).Last().Remove();
    }
}

也可以重写为辅助方法。

但是,如果 OpenXmlPowerTools 团队的某个人将重载写入 TextReplacer 以接受 IEnumerables 进行替换,那就太好了。