Apache Poi:文本在其内容之前添加到.doc文件中,但不在其之后

时间:2014-03-24 10:41:11

标签: java apache-poi

我需要添加一个简单的文本(从另一个.txt或.doc文件)到.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 !!!它运行良好!!!”字符串尚未添加。

我尝试使用

  

range.insertBefore(String text)

方法,所以它工作,并在test1.doc的内容之前添加字符串。

我真的不明白。 这个问题是否有解释。

这是test1.doc的内容:

  

Voilàmonpremier test le 24/03/24

以下是System.out.println(range.text());

的结果

使用insertBefore:

  
      
  1. Hello World !!!它运作良好!!!Voilàmonpremier test le 24/03/24
  2.   

使用insertAfter:

Voilà mon premier test le 24/03/24 

Hello World!!! It works well!!!

1 个答案:

答案 0 :(得分: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);