web-dev-qa-db-ja.com

OpenXMLを使用してWordに改行を挿入する

Openxml WordProcessingDocumentを使用してWordテンプレートを開き、プレースホルダーx1を文字列に置き換えています。文字列に改行を含める必要がない限り、これは正常に機能します。 x1を、Wordが認識する改行を含むテキストに置き換えるにはどうすればよいですか?\n\rを試しましたが、これらは機能しません

Wordテンプレートを開いたときにさらに説明するために、StreamReaderに読み込んでから.Replaceを使用してx1を置き換えます。

52
Danny

改行を挿入するには、BreakインスタンスをRunに追加する必要があります。

例:

run.AppendChild(new Text("Hello"));
run.AppendChild(new Break());
run.AppendChild(new Text("world"));

生成されるXMLは次のようになります。

<w:r>
  <w:t>Hello</w:t>
  <w:br/>
  <w:t>world</w:t>
</w:r>
85
codeape

文字列を取得し、改行で分割し、OpenXMLでレンダリングするC#関数を次に示します。使用するには、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 );
    }
23
Toolsmythe

同じ問題があり、私の場合は<w:br />タグが機能しました。

10
parm

この質問はすでに回答されていますが、次のような質問を解決する別のアプローチがあります:

OpenXMLでXXXを作成するにはどうすればよいですか?

この場合、強力なMicrosoft OpenXML生産性ツール(別名OpenXmlSdkTool))。 ここからダウンロード

  1. 新しいオフィス文書を作成する
  2. OpenXML SDKで再現したい部分をドキュメントに追加します。
  3. Microsoft OpenXML生産性ツールでオフィス文書を開きます
  4. [コードを反映]をクリックします
  5. 右側には、ドキュメントがC#コードに反映されていることがわかります。
8
Mischa