java生成word文档 最简单的java生成word文档方法

来源:网络时间:2022-08-16 17:05:25

  java生成word文档 最简单的java生成word文档方法,这篇文章主要介绍了java生成word文档最简单的方法,首先说明,使用该方法时,尽量不要使用wps新建word文档,经测试,手机不能兼容,出现很多格式问题,office则手机可以很好的兼容,所以,本文以office做教程

  java调用PageOffice生成word

  由于itext导出的word有各种各样的小问题,只能另找其他的解决方案,经过一个朋友推荐,可用PageOffice组件来导出word,其效果能与用户需求的word文档达到完美的一致,而且编程接口简单,调用很方便。总的来说就是制作模板(用PO_开头的书签作为数据占位符),然后编程调用PageOffice接口用真实数据替换模板中的占位符,最后生成word。下面看例子:

  打开word模板插入书签:PO_Dept、PO_Name、PO_Cause、PO_Num、PO_Date,如下图所示

java生成word文档 最简单的java生成word文档方法

  调用PageOffice接口,给word模板填充数据生成word文档:

  // 声明变量存储从数据库中读取的数据

  String docName = "", docDept = "", docCause = "", docNum = "", docDate = "";

  // 数据库数据读取操作(不同的数据库用不同的代码)

  ResultSet rs = stmt.executeQuery("select * from leaveRecord where ID = " + id);

  if (rs.next()) {

  docName = rs.getString("Name");

  docDept = rs.getString("Dept");

  docCause = rs.getString("Cause");

  docNum = rs.getString("Num");

  docDate = rs.getString("SubmitTime");

  rs.close();

  //创建PageOffice的WordDocument对象,操作Word文件

  WordDocument doc = new WordDocument();

  doc.openDataRegion("PO_name").setValue(docName);


  doc.openDataRegion("PO_dept").setValue(docDept);

  doc.openDataRegion("PO_cause").setValue(docCause);

  doc.openDataRegion("PO_num").setValue(docNum);

  doc.openDataRegion("PO_date").setValue(docDate);

  //创建PageOfficeCtrl对象打开文件

  PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);

  poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须

  poCtrl1.setWriter(doc);

  poCtrl1.webOpen("doc/template.doc", OpenModeType.docReadOnly, "Tom");

java生成word文档 最简单的java生成word文档方法

  java代码生成word文档(1)

  word中经常会使用1. 2. 3. 之类的编号,在java自动化生成文档时的实现方式:

  static String cTAbstractNumDecimalXML = ""+ ""+ ""+ ""+ ""+ "";

  XWPFParagraph paragraph = doc.createParagraph();XWPFRun run = paragraph.createRun();CTNumbering cTNumbering = CTNumbering.Factory.parse(cTAbstractNumDecimalXML);CTAbstractNum cTAbstractNum = cTNumbering.getAbstractNumArray(0);XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);XWPFNumbering numbering = doc.createNumbering();BigInteger abstractNumID = numbering.addAbstractNum(abstractNum);BigInteger numID = numbering.addNum(abstractNumID);

  以上代码可以实现编号,效果图:

java生成word文档 最简单的java生成word文档方法


  2. 字体的实现(五号字体):

  XWPFParagraph par = doc.createParagraph();XWPFRun run = par.createRun();run.setFontFamily("等线");// 设置五号字体run.setFontSize(10.5);run.setColor("FF0000");run.setText("网络连接正常");

  以上代码使用的是POI 5.0的版本。五号字体是word中的常用字体,对应是字体大小数字是10.5,新版本的POI在设置字体大小的setFontSize方法可以设置为double类型,5.0以下版本的POI不支持设置为double类型。

  POI5.0可以在maven或者在Apache官网下载到。

文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系我们删除。(本站为非盈利性质网站) 联系邮箱:rjfawu@163.com