Apache POI XWPFRun.setText()不起作用

时间:2014-05-29 10:00:17

标签: java apache-poi

我想使用Apache POI 3.10在XWPFDocument中操作文本运行,方法XWPFRun.setText()不能按我期望的方式工作。这段代码:

XWPFDocument doc = new XWPFDocument(resp.getContent());
for (XWPFParagraph paragraph : doc.getParagraphs()) {
    for (XWPFRun run : paragraph.getRuns()) {
        int textPosition = run.getTextPosition();
        if (run.getText(textPosition) != null) {
            System.out.println("old value: " + run.getText(textPosition));
            run.setText("value changed", textPosition);
            System.out.println("new value: " + run.getText(textPosition));
        }
    }
}

产生输出:

old value: change me
new value: change me

在XWPFDocument中更新单次运行的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

我必须使用run.toString()来解决与您类似的问题。 (org.apache.poi 3.15)调用.toString()后,setText(..)的输出会发生变化。

System.out.println("toString(): " + run.toString());

答案 1 :(得分:0)

已经有一段时间了,注释之间隐藏了解释,因此值得总结一下。

实际上,Apache POI行为没有错误。问题出在命名约定中-尽管POI使用get / set方法,但这并不意味着类遵守JavaBeans规则。在此示例中,setText方法确实可以完成工作-所有更改将在保存编辑后的文档后应用。