Jasperreports+jaspersoft studio学习教程(七)- Table组件的使用

7.1 设计报表模板

 

7.1.1 新建模板DemoReport5.jrxml,去掉不需要的Band,保留Title,Page Header,Detail 1 , PageFooter。将组件Table拖入到Detail1 中,跳出Dataset窗口。选择 Create .. ,然后Next




7.1.2 给Dataset命名。选择 Createnew dateset ... ,然后Next







7.1.3 只保留Column Header,然后 Finish




7.1.4 点击Detail中的Table组件进入到Table界面中。




7.1.5 在Column Header中右键Column1 选择Create Column After,生成4个Column




7.1.6 一般表头都是 合并列的复杂表头。选择Column1 右键 -》 Group Columns




在Columns[1]中的Column1右键Create Column after ,显示如下:



将其他三个也如此操作




7.1.7 将组件Text Field 拖入表格中,并设置表头名




7.1.8 在dateset1中新建Field属性,并拖入到Table的Detail中,设置字体样式(这里自定义命名Filed,且注意类型)




7.1.9 返回到Main Report ,新建Fields 命名为table Data,设置Class为JRBeanCollectionDataSource,注意写全路径,新建一个Field为Date,Class为String





7.1.10 点击Main Report 的Detail中的Table,显示Properties后,点击DataSet,选中Use a JRDatasource expression,将新建tableData写入。





保存模板,并复制到JasperWeb项目中。



7.2 编写Servlet注入数据源


7.2.1 新建Fields类和ModelTableSource类如下:

package com.jasper.bean;

public class Fields {
	
	private String field1;
	private String field2;
	private String field3;
	private String field4;
	private String field5;
	private String field6;
	private String field7;
	private String field8;

//get 和 set方法省略

}

package com.jasper.bean;

import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

public class ModelTableSource {
	/**
	 * 注入table组件的数据源
	 */
	private JRBeanCollectionDataSource tableData;
	/**
	 * 当前时间(查询时间)
	 */
	private String date;
// get和set方法省略

}


7.2.2 新建JasperServlet5 ,doGet内容如下:


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Map<String,Object> parameters = new HashMap<String,Object>(16);
		
		String jrxmlPath = request.getServletContext().getRealPath("/")+"/jrxml/DemoReport5.jrxml";
		//由jrxml文件编译后生产jasper文件的路径
		String jasperPath = request.getServletContext().getRealPath("/")+"/jasper/DemoReport5.jasper";
		
		FileInputStream isRef = null;
		ServletOutputStream sosRef = null;
		
		try {
			//编译jrxml生产jasper文件
			JasperCompileManager.compileReportToFile(jrxmlPath, jasperPath);
			
			isRef = new FileInputStream(new File(jasperPath));
			sosRef = response.getOutputStream();
			//组装list数据源
			List<Fields> list = new ArrayList<Fields>();
			for(int i = 1 ; i <= 20; i++) {
				Fields fields = new Fields("field"+i,"field"+(i+1),"field"+(i+2),"field"+(i+3),"field"+(i+4),"field"+(i+5),"field"+(i+6),"field"+(i+7));
				list.add(fields);
			}
			ModelTableSource mts = new ModelTableSource();
			mts.setDate(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
			mts.setTableData(new JRBeanCollectionDataSource(list));
			List<ModelTableSource> mlist = new ArrayList<ModelTableSource>();
			mlist.add(mts);
			//new JRBeanCollectionDataSource(list)  以javaBean为数据源注入报表数据
			JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JRBeanCollectionDataSource(mlist));
			response.setContentType("application/pdf");
		} catch (JRException e) {
			
			e.printStackTrace();
		}finally {
			sosRef.flush();
			sosRef.close();
		}
	}


7.2.3 启动tomcat并访问







  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值