Openxml WordProcessingDocumentを使用してWordテンプレートを開き、プレースホルダーx1を文字列に置き換えています。文字列に改行を含める必要がない限り、これは正常に機能します。 x1を、Wordが認識する改行を含むテキストに置き換えるにはどうすればよいですか?\n\rを試しましたが、これらは機能しません
Wordテンプレートを開いたときにさらに説明するために、StreamReaderに読み込んでから.Replaceを使用してx1を置き換えます。
改行を挿入するには、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>
文字列を取得し、改行で分割し、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 );
}
同じ問題があり、私の場合は<w:br />
タグが機能しました。
この質問はすでに回答されていますが、次のような質問を解決する別のアプローチがあります:
OpenXMLでXXXを作成するにはどうすればよいですか?
この場合、強力なMicrosoft OpenXML生産性ツール(別名OpenXmlSdkTool))。 ここからダウンロード