【问题标题】:Formatting text using Apache POI 3.8 (HWPF)使用 Apache POI 3.8 (HWPF) 格式化文本
【发布时间】:2012-07-06 11:02:30
【问题描述】:

我正在尝试使用 Apache POI 3.8 在文档中插入以下文本:

[粗体][正常],

但输出文档有这个:

[粗体][正常]

代码:

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        final HWPFDocument doc = new HWPFDocument(new FileInputStream("empty.dot"));

        final Range range = doc.getRange();
        final CharacterRun cr1 = range.insertAfter("[Bold]");
        cr1.setBold(true);

        final CharacterRun cr2 = cr1.insertAfter("[Normal]");
        cr2.setBold(false);

        doc.write(new FileOutputStream("output.doc"));
    }
}

这样做的正确方法是什么?

【问题讨论】:

  • 我认为您在整体范围内尝试可能会遇到问题。您可以尝试只获取一个段落,然后将运行附加到该段落,然后看看它是否表现得更好?
  • final Range range = doc.getRange().getParagraph(0); - 没有帮助,文本仍然是 [Bold][Normal]。我用 XWPF 尝试了类似的方法,它按预期工作,但我仍然需要 HWPF。

标签: apache-poi hwpf


【解决方案1】:

我是这样做的。使用 POI 3.11

paragraph = doc.createParagraph();
paragraph.setStyle(DOG_HEAD_STYLE);
XWPFRun tmpRun = paragraph.createRun();
tmpRun.setText("non bold text ");

tmpRun = paragraph.createRun();
tmpRun.setBold(true);
tmpRun.setText("bold text");
tmpRun = paragraph.createRun();
tmpRun.setBold(false);
tmpRun.setText(" non bold text again");

【讨论】:

  • OP 明确表示他们想使用 HWPF,那么这段 XWPF 代码对他们有何帮助?
猜你喜欢
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
相关资源
最近更新 更多