所以我试图使用docx4j。我制作了一个简单的模板,使用它并以编程方式替换值。
这是我的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 ,但我试图使用它只是因为那是互联网目前使用的帖子。
这是我的代码。
def config = grailsApplication.config.template.invoiceSample as Map
def String templateFileName = " $ {grailsApplication.config.template.dir} / $ {config.doc.templateFileName}"
WordprocessingMLPackage template = WordprocessingMLPackage.load(new File(templateFileName));
Map map = new HashMap();
map.put(新的DataFieldName(" @ myName")," Jean");
map.put(new DataFieldName(" @ myAge")," 30");
map.put(new DataFieldName(" @ myAddress")," Sampaloc");
org.docx4j.model.fields.merge.MailMerger.setMERGEFIELDInOutput(MailMerger.OutputField.KEEP_MERGEFIELD);
org.docx4j.model.fields.merge.MailMerger.performMerge(template,map,false);
template.save(新文件(" C:/temp/OUT_SIMPLE.docx"));
但是,它不会替换输出文件中的值。你能告诉我我的代码有什么问题吗?
答案 0 :(得分:0)
我发现这个问题很容易解决。
这条线基本上会影响输出。
MailMerger.setMERGEFIELDInOutput(MailMerger.OutputField.KEEP_MERGEFIELD);
根据我的观察,这些选项执行以下操作:
如果您认为我说错了,请随时更新我的回答。