0

我正在使用 XWPFDocument 为发票生成 .docx。我在控制台上设计了如下所示的字符串

    XXXX Restaurant & Cafe
      Phone No# 12131546

Invoice No. 120
Type: C-6
Customer Name:         29 05 2015
---------------------------------------
Product    Qty   Price   Total
---------------------------------------
fr. egg+toast but. jam
           1  110.0  110.0
---------------------------------------
Discount: 0%
Sub total: 110.0
Cash: 200

我生成 .docx 的代码是:

FileOutputStream output = new FileOutputStream(FILE);                   
                    XWPFDocument doc = new XWPFDocument();
                     XWPFParagraph para = doc.createParagraph();
                    para.setAlignment(ParagraphAlignment.CENTER);
                     XWPFRun run  = para.createRun();
                     run.setBold(true);
                     run.setFontSize(11);
                      doc.write(output); 
                    output.close();

但生成的具有文本的 .docx 看起来像:

"XXXXXX Restaurant & Cafe 电话号码# 12313531 发票编号 120 类型:C-6 客户名称:29 05 2015 -------------------------- ------------- 产品数量 总价 --------------------------------- ------ fr. 鸡蛋+吐司但果酱 1 110.0 110.0 --------------------------------- ------ 折扣:0% 小计:110.0 现金:200 余额:90.0"

我想获得与控制台上相同的东西。请尽快​​提供帮助。

4

1 回答 1

0

我可能错了。但据我记得 XWPFRun 忽略了字符串中的所有 \n 。因此,尝试将 run.setText(text) 与带样式的文本一起使用会很不幸地为您提供无样式的文本。您必须为创建运行的文本设置样式。像这样的东西可能确实有效,但我现在还没有测试过:

XWPFParagraph p = doc.createParagraph();
for(Sting s:text.split("\n")){
    XWPFRun = p.createRun();
    run.setText(s);
}

这不会保留您字符串中的所有样式信息。您只需要使用 XWPFRuns 生成样式输出。

于 2015-08-19T09:58:26.170 回答