2014-03-24 31 views
0

我需要添加一個簡單的文本(從另一個.txt或.doc文件)到一個.doc文件代碼是非常簡單的:Apache Poi:文本被添加到.doc文件之前它的內容,但不是在它之後

public static void main(String[] args) throws IOException { 
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("/home/amira/work/APPS-579/word/test1.doc")); 
HWPFDocument doc = new HWPFDocument(fs); 

Range range = doc.getRange(); 

CharacterRun run = range.insertAfter("Hello World!!! It works well!!!"); 
run.setBold(true); 
run.setItalic(true); 
run.setCapitalized(true); 
OutputStream out = new FileOutputStream("/home/amira/work/APPS-579/word/sampleAfter.doc"); 
doc.write(out); 
out.flush(); 
out.close(); 
} 

新的sampleAfter.doc被創建,但只包含test1.doc的內容:「Hello World !!! It works well !!!」字符串尚未添加。

我嘗試了用

range.insertBefore(字符串文本)

方法,所以它的工作原理和字符串test1.doc的內容前添加。

我真的不明白。 有沒有這個問題的解釋。

這裏的test1.doc的內容:

瞧週一首選測試樂24/03/24

這裏的結果:System.out.println(range.text());

隨着的insertBefore:

  1. Hello World !!!它運作良好!瞧週一首選測試樂24/03/24

隨着insertAfter:

Voilà mon premier test le 24/03/24 

Hello World!!! It works well!!! 
+0

這是什麼版本的Apache POI? – Gagravarr

+0

@Gagravarr最後一個3.9,因爲我有以前版本的poi這個問題http://stackoverflow.com/questions/22564664/how-to-merge-doc-files-using-apache-poi-api/22607078# 22607078 – AmiraGL

+0

你有沒有試過最新的,比如3.10? – Gagravarr

回答

1

好了,上面的代碼似乎爲我工作。我想最好遵循以下方法

Range r1 = doc.getRange(); 
Section sec = r1.getSection(r1.numSections()-1); 
Paragraph para = sec.getParagraph(sec.numParagraphs()-1); 
CharacterRun run = para.getCharacterRun(para.numCharacterRuns()-1); 
run.insertAfter("Hello World!!! It works well!!!"); 
run.setBold(true); 
run.setItalic(true); 
run.setCapitalized(true); 
+0

謝謝你,但我有一個問題,當你寫代碼我使用時,你有同樣的問題嗎? – AmiraGL

+0

不,我沒有得到這個問題。 – Liquidpie

相關問題