2015-11-20 225 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。

相關問題