`
妮子321
  • 浏览: 79506 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

在项目的开发中会遇到这样的需求:要求在生成word文件的时候,在文件的指定位置生成不定数目的表格,每个表格的结构是一样的,但是需要根据数据库中的数据记录对每个表格填充不同的数据。上面所说的这个需求的基本模型可以认为是在word文件的指定位置开始生成工资条,因为工资条的特点就是每个人的表格都一样,只是表格里面的信息不一样。

解决思路: 使用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 的表格如下:
员工编号 员工姓名 所属部门 工资 发放时间
.        
  1. 示意代码如下:
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++;
}
  1. 在111.doc中生成的表格如下:
员工编号 员工姓名 所属部门 工资 发放时间
0001 张志强 技术 8000 2013-2-2
员工编号 员工姓名 所属部门 工资 发放时间
0002 李志 技术 9000 2013-2-2

……

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics