У меня есть файл Microsoft Word 2007 / xml .docx, который я пытаюсь редактировать с помощью Apache POI 3.8beta4. Документ содержит, среди прочего, таблицу, которая содержит ячейки с заполнителями в форме $ {place.holder}, которые мне нужно заменить. То, что у меня так далеко, это
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 («текст замены») добавляет к уже существующим строковым данным вместо их замены, поэтому в конечном документе я получаю строку «{place.holder} текст замены» ".
Как заменить текст, а не добавить к нему?
Привет