Итак, я пытаюсь использовать docx4j. Я сделал простой шаблон, использую его и программно заменяю.docx4j: Используйте шаблон docx и замените значение переменной MergeField
Это мой шаблон docx.
My Name is «myName»
I’m «myAge» years old.
My address is «myAddress»
Когда я нажимаю переключаемые коды полей это выглядит следующим образом.
My Name is {MERGEFIELD myName \* MERGEFORMAT}
I’m {MERGEFIELD myAge \* MERGEFORMAT} years old.
My address is {MERGEFIELD myAddress \* MERGEFORMAT}
Я не знаю, использование MERGEFIELD, но я пытался использовать его просто потому, что это то, что пост в интернете в настоящее время используют.
Вот мой код.
Защиту конфиг = grailsApplication.config.template.invoiceSample как Map
Защиту Строка templateFileName = "$ {grailsApplication.config.template.dir}/$ {config.doc.templateFileName}"
WordprocessingMLPackage template = WordprocessingMLPackage.load (новый файл (templateFileName));
Map map = new HashMap();
map.put (новое имя DataFieldName ("@ myName"), "Jean");
map.put (новое имя DataFieldName ("@ myAge"), "30");
map.put (новое имя DataFieldName ("@ myAddress"), "Sampaloc");
org.docx4j.model.fields.merge.MailMerger.setMERGEFIELDInOutput (MailMerger.OutputField.KEEP_MERGEFIELD);
org.docx4j.model.fields.merge.MailMerger.performMerge (шаблон, карта, ложь);
template.save (новый файл ("C: /temp/OUT_SIMPLE.docx"));
Однако он не заменяет значение в выходном файле. Не могли бы вы рассказать мне, что не так с моим кодом?