将字符串映射到XWPFDocument与控制台相同

时间:2015-05-29 11:57:05

标签: java xwpf

我正在使用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。egg + toast但是.jam 1 110.0 110.0 ----------------------------- ----------折扣:0%小计:110.0现金:200余额:90.0“

我希望获得与控制台相同的内容。请尽快帮助。

1 个答案:

答案 0 :(得分:0)

我可能错了。但据我所知,XWPFRun会忽略字符串中的所有\ n。因此,尝试将run.setText(text)与样式文本一起使用会不合时宜地为您提供无样式的文本。您必须设置文本创建运行的样式。 这样的事情可能会有效,但我现在还没有测试过它:

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

这不会保留String中的所有样式信息。您只需使用XWPFRnns生成样式化输出。