多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## **PageOffice动态插入Word表格** 在项目的开发中会遇到这样的需求:要求在生成word文件的时候,在文件的指定位置生成不定数目的表格,每个表格的结构是一样的,但是需要根据数据库中的数据记录对每个表格填充不同的数据。上面所说的这个需求的基本模型可以认为是在word文件的指定位置开始生成工资条,因为工资条的特点就是每个人的表格都一样,只是表格里面的信息不一样。 >[info]**解决思路:** 使用PageOffice实现这个需求模型的话需要一个模板template.doc,模板template.doc中包含了一个设计好的工资条的表格,在用PageOffice打开正式的文件(比如:zhengshi.doc)之前,用PageOffice的WordDocument对象获取到zhengshi.doc中要插入表格的那个指定位置,然后用DataRegion对象插入模板文件template.doc到这个位置,再使用Table对象把数据库中的值填充到表格中,接着在这个表格后面重复前面插入表格的方法插入新的表格和数据,直到所有的表格都生成完毕。 >详细效果请参考PageOffice开发包中Samples4示例: >三、10、插入Word表格模板动态生成工资条 **示例说明:** 为了便于分析PageOffice 实现动态插入表格的核心代码,此演示打开了一个空白的Word文件作为正式文件来生成工资单。编写代码在文件末尾循环动态创建数据区域,并在数据区域中插入template.doc和填充数据,最终在word文件中生成所有员工的工资条信息。 1. 模板template.doc 的表格如下: | 员工编号 | 员工姓名 | 所属部门 |工资 | 发放时间 | | --- | --- | --- | --- | --- | | . | | | | | 2. 示意代码如下: ~~~ WordDocument doc = new WordDocument(); DataRegion data = null; Table table = null; int i = 0; while (rs.next()) { data = doc.createDataRegion("reg" + i,DataRegionInsertType.Before, "[End]"); data.setValue("[word]doc/template.doc[/word]");//插入模板中表格到文件中 //给单元格赋值 table = data.openTable(1); table.openCellRC(2, 1).setValue(rs.getString("ID")); table.openCellRC(2, 2).setValue(rs.getString("UserName")); table.openCellRC(2, 3).setValue(rs.getString("DeptName")); table.openCellRC(2, 4).setValue(rs.getString("Salary")); table.openCellRC(2, 7).setValue(rs.getString("DateTime")); i++; } ~~~ 3. 在111.doc中生成的表格如下: |员工编号| 员工姓名| 所属部门| 工资| 发放时间| | ---|---|---|---|---| |0001|张志强|技术|8000|2013-2-2| |员工编号| 员工姓名| 所属部门| 工资| 发放时间| | ---|---|---|---|---| |0002|李志|技术|9000|2013-2-2| ……