docx4j does not replace variables

孤街醉人 提交于 2019-11-29 09:52:52
JasonPlutext

No doubt Word is splitting your "variable" across runs, with grammar or spelling flags.

Fix it up with VariablePrepare

Put this line in after you instantiate the WordprocessingMLPackage:

VariablePrepare.prepare(wordMLPackage);

Then you can use your mappings to replace the variables.

I realize this is an old post, but for others that stumble onto this, another reason you can get this result is if you have incorrect "keys" in your HashMap. So in my case, I was using my old xml format as the key like

.put("<variable/>","TEST");

when I should have been using:

.put("variable","TEST");

The document itself was using tags like

${variable}

The VariableReplace code will remove the ${} formatting whether a match is found or not. So if it is not finding a match, then the keys might not match the ones in the document for some reason, and this might not strictly be related to VariablePrepare. But this was a very helpful post for me since the VariablePrepare, VariableReplace solution is now working for my purposes.

Also, I am not sure that even VariablePrepare can handle the case where you change the font, highlighting or other formatting in the middle of your tag in the document. In such cases, it will not be able to merge the tag into a single run, and so tag recognition will likely fail.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!