Apache POI 3.8beta4を使用して編集しようとしているMicrosoft Word 2007/xml .docxファイルがあります。ドキュメントには、とりわけ、置き換える必要がある$ {place.holder}の形式でプレースホルダを保持するセルを含むテーブルが含まれています。私がこれまでにしてきたのは、Apache POIを使用してMicrosoft Word 2007/xmlの.docxファイルを更新すると、テキストが置換されずに追加されますか?
InputStream resourceAsStream = getClass().getResourceAsStream("/path/to/templates/rma.docx");
try {
XWPFDocument xwpfdoc = new XWPFDocument(resourceAsStream);
FileOutputStream fos = new FileOutputStream(new File("C:\\temp\\newTemplate.docx"));
for (XWPFTable table : xwpfdoc.getTables()) {
for (XWPFTableRow row : table.getRows()) {
for (XWPFTableCell cell : row.getTableCells()) {
String data = cell.getText();
if (data.contains("${rma.number}")) {
cell.setText("08739");
}
if (data.contains("${customer.name}")) {
cell.setText("Roger Swann");
}
}
}
}
xwpfdoc.write(fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
問題がcell.setText(「置換テキストは」}代わりにそれを交換する既に存在している文字列データに付加するので、私は、完成した文書にで終わることは、文字列「{場所でされていることです。ホルダー}置換テキスト」。
どのようにテキストを置き換えるのではなく、それに追加しますか?
よろしく
はい、setText(String、int)メソッドを使用する場合、XWPFRunレベルに移行します。ストレートsetText(String)を使用すると、追加されます。 – user497087
バグを報告することをお勧めします。 :) – Gagravarr