繁体   English   中英

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

[英]Apache Poi: Text is added to .doc file before it's content but not after it

我需要向一个.doc文件中添加一个简单的文本(从另一个.txt或.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(字符串文本)

方法,使其起作用,并将字符串添加到test1.doc的内容之前。

我真的不明白。 是否有对此问题的解释。

这是test1.doc的内容:

Voilàmon Premier Test le 24/03/24

这是结果: System.out.println(range.text());

带有insertBefore:

  1. 你好,世界!!! 它运作良好!!Voilàmon首要测试文件24/03/24

带有insertAfter:

Voilà mon premier test le 24/03/24 

Hello World!!! It works well!!!

好,上面的代码似乎对我有用。 我想最好遵循以下方法

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM