使用apache POI

时间:2015-11-20 11:16:17

标签: java ms-word apache-poi

我一直在尝试使用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()开头)。不需要文本替换,只需将文本放在文档的末尾即可。我搜索了类似的脚本,但大多数都处理文本替换。

如何在所有段落之后添加文本?

2 个答案:

答案 0 :(得分:1)

我已使用以下文档对其进行了测试:

enter image description here

首先(使用您的原始代码)它完全破坏了文档:

enter image description here

通过更改以下行,插件适用于我:

// Old
Range range = doc.getEndnoteRange();
// New
Range range = doc.getEndnoteRange();

enter image description here

答案 1 :(得分:1)

我担心你和HWPF在项目的当前状态下运气不好。

我为其中一个客户创建了一个自定义HWPF库,但更改不公开。变化是巨大的,所以你不能花费 - 比如 - 一周,并假设事情将被修复。当只需要替换某些文本而不更改字符串长度("abc" -> "123""a " -> "1234")时,您可能会使用当前的公共HWPF。