Apache poi 3.8 を使用して Word テンプレートに値を書き込んでいます。Word ファイル (キー) 内の特定の文字列を必要な値に置き換えます。たとえば、Word 文書にキー %Entry1% を含む段落があり、それを「エントリ テキスト line1 \n改行」に置き換えたいとします。置き換えられたすべてのキーと値は、私の実現では Map に保存されます。
Map<String, String> replacedElementsMap;
HWPFDocument のコードは次のとおりです。
Range range = document.getRange();
for(Map.Entry<String, String> entry : replacedElementsMap.entrySet()) {
range.replaceText(entry.getKey(), entry.getValue());
}
このコードは問題なく動作します。改行のエントリ文字列に \n を入れるだけです。ただし、XWPFDocument の同様の方法が見つかりません。XWPFDocument の現在のコードは次のとおりです。
List<XWPFParagraph> xwpfParagraphs = document.getParagraphs();
for(XWPFParagraph xwpfParagraph : xwpfParagraphs) {
List<XWPFRun> xwpfRuns = xwpfParagraph.getRuns();
for(XWPFRun xwpfRun : xwpfRuns) {
String xwpfRunText = xwpfRun.getText(xwpfRun.getTextPosition());
for(Map.Entry<String, String> entry : replacedElementsMap.entrySet()) {
if (xwpfRunText != null && xwpfRunText.contains(entry.getKey())) {
xwpfRunText = xwpfRunText.replaceAll(entry.getKey(), entry.getValue());
}
}
xwpfRun.setText(xwpfRunText, 0);
}
}
現在、「\n」文字列は改行にならず、使用する xwpfRun.addCarriageReturn();
と段落の後に改行が発生します。xwpfで新しい行を正しく作成するにはどうすればよいですか?