我正在尝试使用 POI 3.8 查找并替换 docx 文件中的文本段落,如 here 中所述。 .
如果我在第一次运行时插入标签,效果就很好。但是,一旦我重新打开 docx 文件并进行一些修改,Word 实际上就会在文本运行中产生碎片。例如,“hello world”可能是:
<w:r><w:t>Hello wo</w:t></w:r><w:r w:rsidR="00FB0672"><w:t>rld</w:t></w:r>
我认为这种碎片化是由于更改跟踪、格式设置和拼写检查等原因造成的。
有人知道如何...
a) ...在 MS Word 中禁用此功能?
b) ...之后以某种方式对 docx 文件进行碎片整理?
c) ...还有其他解决方案可以消除这种碎片吗?
我已尝试将文件另存为 .doc/.odt 并将文件重新保存为 .docx。但这些碎片仍然存在......
非常感谢任何帮助 - 提前感谢您的帮助!
最佳答案
在 Word 中,您想要且可以关闭的功能是拼写和语法检查以及 rsid 插入。
这是针对docx4j(我管理的项目)的,不是POI,而是VariablePrepare向您展示如果您无法在 Word 中阻止碎片整理,则需要执行哪些操作。由于 POI 使用类似的 XML 编码/解码方法(尽管是 XML Bean,而不是 JAXB),因此您应该能够转换该代码以使用 POI API。
关于java - 如何对 docx 文件进行碎片整理以便与 Apache POI 3.8 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13403986/