[转载]java操做word(一)

1、 需求背景web

  在作项目的过程当中,常常会遇到要把数据库数据导出到Word文件中的需求,由于不少状况下,咱们须要将数据导出到WORD中进行打印。此需求能够经过用程序填充数据到word模板中来实现。所谓模板也就是标记了数据位置的Word文件。模板能够简单的分为两种:一种模板包含了固定的、有限个数的数据位置,好比一个请假条的模板中只有“部门、姓名、缘由、天数、日期”几个数据位置,也多是这5个数据位置中的某4个、某3个或某1个,但模板中的标签数量老是这个集合的子集(以下图所示:);另外一种是包含了循环数据的,好比要生成一个员工信息表,这个表格中有不定个数的员工信息,每一个员工的信息都包含了“编号、部门、姓名、年龄、籍贯”。第一种模板导出word文件相对比较简单,在本文中先描述此方案的实现方法。数据库

  

2、 实现方法spa

  1. 编辑模板:模板中必须标记好数据要插入的位置,这样才能够实现用程序插入数据到文件的相应位置,就是说要想生成文件,数据的位置必须用某种元素来标记出来。使用PageOffice填充数据到word文件,须要用Word书签来标记要插入数据的位置。先在Word模板中标记好“部门、姓名、缘由、天数、日期”几个数据位置:PO_Dept、PO_Name、PO_Cause、PO_Num、PO_Date,以下图所示:code

  
  通常的开发人员使用Word比较少,可能不清楚Word书签是怎样插入的,下面简单的介绍一下插入书签的方法。
  第一种方法:把光标定位到须要标记数据位置的地方,点Word菜单中的“插入”-“书签”,就会弹出一个标题为“书签”的对话框(以下图所示),输入新书签的名称,注意:书签名必须以字母、汉字、中文标点等开头,能够包含数字但中间不能有空格(用PageOffice开发的时候不推荐使用中文命名书签名)。点右侧的“添加”按钮,新的书签名将出如今下面的列表中。
  server

  第二种方法:选择几个文字、或一段文字、或者选择一段包含表格和图片的内容,为选中的内容指定书签的对象,而后执行第一种方法的一样操做,“插入”→“书签”……
注意:若是新插入位置或新对象采用的是已有的书签名,原有的书签将自动取消。对象

  PageOffice示例代码中的模板在制做的时候,多采用第二中方法定义书签,插入书签以前会先写一个标示性的词语用中括号括起来,好比:[姓名],而后选中“[姓名]”,再插入书签。这样作的目的是便于在查看或编辑模板数据位置的时候一目了然。blog

  在使用PageOffice开发的过程当中,为了不出现与用户本身定义的书签出现冲突,要求插入的书签名称必须以“PO_”开头。注意是字母o,不是数字0。书签名是不区分大小写的也能够写成“po_”。在PageOffice的概念里提到的数据区域,本质上就是书签,可是只有“po_”开头的书签才叫数据区域,请注意这点。接口

  2. 编写代码调用PageOffice的接口填充数据到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");
复制代码

 

3、 生成文件的效果开发

  

4、 示例下载

  http://www.zhuozhengsoft.com/down4/Java/BigDemo/poword.rar,或者下载PageOffice for Java的开发包,查看开发包中的示例:3、五、请假条示例

相关文章
相关标签/搜索