问 题
我是试图取代模板 DOCX 与Apache POI文件使用 XWPFDocument 类。我在doc和 JSON 文件标签读取替换数据。我的问题是一个文本行,似乎在 DOCX以某种方式分离当我改变其推广到邮政编码文件打开 document.xml 。例如 [MEMBER_CONTACT_INFO] 文本成为 [MEMBER_CONTACT_INFO 和] 分别。 POI 在自 DOCX 原来是这样以同样的方式读取此。这将在第2款 XWPFRun 对象这显示文本为 [MEMBER_CONTACT_INFO 和] 分开。
我的问题是,有没有办法迫使 POI 通过合并相关的运行或类似的东西,如Word运行?或者,我怎么能解决这个问题?我正在运行的匹配,而文本替换因为它被分成2个不同的运行对象我找不到我的标签。
最佳
解决方案
这浪费了那么多我的时间...一次
基本上,一个 XWPFParagraph 是由多个的 XWPFRun s和XWPFRun是具有固定的传染性文本同样的风格。
所以,当你尝试写一些像“[PLACEHOLDER_NAME]”在MS-Word中它会创建一个单一的XWPFRun。但是,如果你不小心添加了一些东西多了,然后你回去改“[PLACEHOLDER_NAME]”以别的东西它永远不会保证它仍将是一个 XWPFRun 它很可能,这将拆分到两分。据我所知,这是MS-Word如何工作的。
如何避免奔跑的分裂在这种情况下?
解决方案:有两种解决方案,我所知道的:
-
复制文本“[PLACEHOLDER_NAME]”到记事本什么的。让你的必要的修改和复制回来,并粘贴,而不是“[PLACEHOLDER_NAME]”你的字的文件,这样一来你的整个“[PLACEHOLDER_NAME]”将被新的文本,避免XWPFRuns分裂取代。
-
选择“[PLACEHOLDER_NAME]”,然后单击MS-Word中的“替换”选项,并替换为“[您的全新编辑的占位符]”,这将保证您新的占位符会消耗一个XWPFRun
如果您需要再次更改新的占位符,按照步骤1或2。