Я пытаюсь обновить документ Microsoft Word, используя Apache POI. Документ msword - это шаблон, который содержит несколько заполнителей в форме "$ {place.holder}", и все, что мне нужно сделать, это заменить их определенными значениями. То, что у меня так далеко, это
private void start() throws FileNotFoundException, IOException {
POIFSFileSystem fsfilesystem = null;
HWPFDocument hwpfdoc = null;
InputStream resourceAsStream = getClass().getResourceAsStream("/path/to/document/templates/RMA FORM.doc");
try {
fsfilesystem = new POIFSFileSystem(resourceAsStream );
hwpfdoc = new HWPFDocument(fsfilesystem);
Range range = hwpfdoc.getRange();
range.replaceText("${rma.number}","08739");
range.replaceText("${customer.name}", "Roger Swann");
FileOutputStream fos = new FileOutputStream(new File("C:\\temp\\updatedTemplate.doc"));
hwpfdoc.write(fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Программа работает без ошибок. Если я загляну в выходной файл с помощью шестнадцатеричного редактора, то увижу, что программа заменила заполнители. Однако, когда я пытаюсь открыть документ с помощью MSWord, MSWord вылетает.
Есть ли какой-то шаг (серия шагов), который я пропускаю, или мне в принципе не повезло с этим? Нужно ли настраивать какие-либо счетчики, поскольку длина замещающего текста не совпадает с длиной заменяемого текста?
Привет