使用OpenXML在Word中插入换行符

Dan*_*nny 54 c# ms-word openxml

我使用openxml WordProcessingDocument打开Word模板并用字符串替换占位符x1.这工作正常,除非我需要字符串包含换行符.如何用文本替换x1可能包含单词可识别的换行符?我试过\n\r但是这些都不起作用

只是在打开单词模板时进一步解释我将其读入StreamReader然后使用.Replace替换x1.

cod*_*ape 86

要插入换行符,您必须添加一个Break实例Run.

例:

run.AppendChild(new Text("Hello"));
run.AppendChild(new Break());
run.AppendChild(new Text("world"));
Run Code Online (Sandbox Code Playgroud)

生成的XML将类似于:

<w:r>
  <w:t>Hello</w:t>
  <w:br/>
  <w:t>world</w:t>
</w:r>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,在 PPTX / PresentationML 中,`Break()` 必须是 `Paragraph` 的子级,而不是 `Run` 的子级 (2认同)

Too*_*the 23

这是一个C#函数,它将获取一个字符串,将其拆分为换行符并在OpenXML中呈现它.要使用,请实例化Run并使用字符串将其传递给函数.

void parseTextForOpenXML( Run run, string textualData )
{
    string[ ] newLineArray = { Environment.NewLine };
    string[ ] textArray = textualData.Split( newLineArray, StringSplitOptions.None );

    bool first = true;

    foreach ( string line in textArray )
    {
        if ( ! first )
        {
            run.Append( new Break( ) );
        }

        first = false;

        Text txt = new Text( );
        txt.Text = line;
        run.Append( txt );
    }
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我修改了 `string[ ] newlineArray = { Environment.NewLine, "\n", "\r\n", "\n\r" }` 使其适用于所有类型的中断。8 年过去了,但它仍然是最好的答案。 (2认同)

小智 10

我有同样的问题,在我的情况下<w:br />标签工作.


Mis*_*cha 8

尽管这个问题已经回答了,我还有另一种方法可以解决以下问题:

如何使用OpenXML制作XXX?

在这种情况下,您可以使用功能强大的Microsoft OpenXML生产力工具(也称为OpenXmlSdkTool).在这里下载.

  1. 创建一个新的Office文档
  2. 使用OpenXML SDK将部件添加到要重现的文档中.
  3. 使用Microsoft OpenXML生产力工具打开office文档
  4. 点击"反映代码"
  5. 在右侧,您将看到您的文档反映到C#代码中.