我一直在尝试使用Apache POI编辑不同类型的文档。该脚本应处理扩展程序.doc
和.docx
。我可以使用.docx
api成功编辑XWPF
文件,并在docx文件的末尾添加了所需的文本。
要修改.doc
个文件(包括标题,页脚和一些段落),请使用以下脚本,使用HWPFDocument
。
FileInputStream fis = new FileInputStream(args[0]);
POIFSFileSystem fs = new POIFSFileSystem(fis);
HWPFDocument doc = new HWPFDocument(fs);
Range range = doc.getRange();
CharacterRun run = range.insertAfter("FROM SEHWAGGG A FOUUURRRRRR");
run.setBold(true);
run.setItalic(true);
该脚本适用于没有标题和页脚的普通文档。但似乎问题出现在复杂的文件中。它插入文本,但在段落之间(以及使用insertBefore()
开头)。不需要文本替换,只需将文本放在文档的末尾即可。我搜索了类似的脚本,但大多数都处理文本替换。
如何在所有段落之后添加文本?
答案 0 :(得分:1)
我已使用以下文档对其进行了测试:
首先(使用您的原始代码)它完全破坏了文档:
通过更改以下行,插件适用于我:
// Old
Range range = doc.getEndnoteRange();
// New
Range range = doc.getEndnoteRange();
答案 1 :(得分:1)
我担心你和HWPF在项目的当前状态下运气不好。
我为其中一个客户创建了一个自定义HWPF库,但更改不公开。变化是巨大的,所以你不能花费 - 比如 - 一周,并假设事情将被修复。当只需要替换某些文本而不更改字符串长度("abc" -> "123"
或"a " -> "1234"
)时,您可能会使用当前的公共HWPF。