2015-11-20 178 views
0

我一直在尝试使用Apache POI编辑不同类型的文档。该脚本应处理两个扩展.doc.docx。我可以使用XWPF API成功编辑.docx文件,并在docx文件的末尾添加所需的文本。使用Apache POI在MS Word文档中添加文本

对于编辑.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())之间。没有文本替换要求,只需要将文本放在文档的末尾。我搜索了类似的脚本,但其中大多数处理文本替换。

如何在所有段落末尾添加文本?

+1

它对我来说工作得很好,你检查word文档,尝试一个新的文档 –

+0

hmm..okay,其实我使用的文档包括页眉和页脚,并有4或5页。让我检查一下不同的文件。 – RunningAdithya

+0

如果我的问题没有问题,我并不确定。这是之前的文档:http://imgur.com/FH9SVkx 这是您的代码适用的修改:http://imgur.com/Nt7XroL 是您期望的吗? –

回答

1

我用下面的文档进行了测试:

enter image description here

在第一(与原来的代码)它彻底摧毁了文件:

enter image description here

通过更改以下行,插入对我适用:

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

enter image description here

1

恐怕你的运气与HWPF与项目的当前状态。

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

相关问题