docx模板Docx4j替换Java中的文本

docx模板Docx4j替换Java中的文本,java,templates,text,replace,docx4j,Java,Templates,Text,Replace,Docx4j,我是Docx4j新手,我的任务是替换docx模板的一些文本。 我阅读了docx4j的入门指南,但我认为我没有完全理解整个概念。 不管怎样。。。我已经试过了[Docx4j的解压模板][1], 这在给定的docx上运行得很好,但是当我自己尝试它时,我遇到了同样的问题 例外情况是HashMap不包含有效的键或值,因此它不会替换占位符 我换了新的 <w:proofErr w:type="spellEnd"/> 通过禁用拼写检查,但仍然不起作用。。。运行应用程序也需要相当长的时间 在中,

我是Docx4j新手,我的任务是替换docx模板的一些文本。 我阅读了docx4j的入门指南,但我认为我没有完全理解整个概念。 不管怎样。。。我已经试过了[Docx4j的解压模板][1], 这在给定的docx上运行得很好,但是当我自己尝试它时,我遇到了同样的问题 例外情况是HashMap不包含有效的键或值,因此它不会替换占位符

我换了新的

<w:proofErr w:type="spellEnd"/>

通过禁用拼写检查,但仍然不起作用。。。运行应用程序也需要相当长的时间

在中,我不理解Getting_Started.pdf中的数据绑定示例,所以我没有选择了

如何简单地替换docx中的一些字符串文本

编辑: 我发现如果我在unmarshallFromTemplate.docx中添加一些文本并保存它,它将不会替换新的文本行。 -标记以某种方式拆分为多个标记:

<w:p w:rsidR="002512F8" w:rsidRDefault="002512F8" w:rsidP="002512F8"><w:r><w:t>My</w:t></w:r><w:r w:rsidR="001A5174"><w:t xml:space="preserve"> favourite ice cream is ${DEGREE</w:t></w:r><w:r><w:t>}.</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack"/><w:bookmarkEnd w:id="0"/></w:p>
我最喜欢的冰淇淋是${DEGREE}。
编辑document.xml中的文本,并添加缺少的信息没有多大帮助

无论如何,这是我使用的Template.docx的document.xml:

编辑2:

伙计们。我找到了一个非常适合自己的解决办法,不知道为什么花了这么长时间才弄明白。 正如我所说的:在我看来,出现这种情况的原因是${}。因此,我只是在我的占位符之前使用了一个#,并重写了每个占位符,这样所有占位符都可以在一次运行中完成

不得不多次切换到document.xml并重写段落,但后来成功了。然后我简单地使用了一个替换(占位符,xml)并替换了marshaled document.xml的文本,然后再次将其解组。
工作。故事的结尾,去他妈的夜间构建或映射。THX

docx4j源代码在GitHub上已经有一段时间了;该svn存储库已过时

现在调用等效示例。这段代码效率更高一些,但您需要自己构建,或者使用当前的夜间构建


您可能会发现running解决了您的问题。

docx4j源代码在GitHub上已经有一段时间了;该svn存储库已过时

现在调用等效示例。这段代码效率更高一些,但您需要自己构建,或者使用当前的夜间构建


您可能会发现正在运行的代码解决了您的问题。

docx4j中内置的占位符搜索和替换代码工作正常,但是如果占位符被rsid实体分解,您需要确保在保存“模板”(即源代码)时禁用语法和拼写检查文件。这将有助于防止您的文本运行变得支离破碎(请注意,您可能还希望禁用校对,因为这会在此处和任何地方插入书签标记)


完成搜索和替换并拥有新的/更新的文档后,可以很容易地重新启用拼写检查。此线程有更多关于rsid的内容:

docx4j内置的占位符搜索和替换代码工作正常,但如果占位符被rsid实体分解,则需要确保在保存“模板”(即源)文档时禁用语法和拼写检查。这将有助于防止您的文本运行变得支离破碎(请注意,您可能还希望禁用校对,因为这会在此处和任何地方插入书签标记)


完成搜索和替换并拥有新的/更新的文档后,可以很容易地重新启用拼写检查。此线程有关于RSID的更多信息:

请用所有必需的数据填写此问题;在你提出问题的其他论坛上发布链接不是一个好做法。请用所有必需的数据填写此问题;发布一个链接到其他论坛上,你问这不是一个好的做法。嗨!谢谢你的建议。我试着让它像这个线程一样工作:但它仍然不工作。现在我甚至看不到我的文本区,我的占位符放在哪里。难道没有更简单的方法吗?可能只是简单的纯文本替换?您需要解压缩docx,然后发布word/document.xml的内容,这样我们就可以看到您在说什么。编辑问题并将其添加到那里。我发现>这个linkSee现在对我有效,非常神奇。只需添加filterSettings.setRemoveBookmarks(true);你好谢谢你的建议。我试着让它像这个线程一样工作:但它仍然不工作。现在我甚至看不到我的文本区,我的占位符放在哪里。难道没有更简单的方法吗?可能只是简单的纯文本替换?您需要解压缩docx,然后发布word/document.xml的内容,这样我们就可以看到您在说什么。编辑问题并将其添加到那里。我发现>这个linkSee现在对我有效,非常神奇。只需添加filterSettings.setRemoveBookmarks(true);