JasperReports例子代码(转载)

sperReports例子代码

代码例子:
设置编译的类库和表格文件存放目录:
JRProperties.setProperty(JRProperties.COMPILER_CLASSPATH, context.getRealPath("/WEB-INF/lib/jasperreports-1.2.0.jar")
???+ System.getProperty("path.separator")
???+ context.getRealPath("/WEB-INF/classes/"));
JRProperties.setProperty(JRProperties.COMPILER_TEMP_DIR, context.getRealPath("/reports/"));
或者是直接使用:
JasperCompileManager.compileReportToFile(context.getRealPath("/reports/WebappReport.jrxml"));

HTML Export:
File reportFile = new File(context.getRealPath("/reports/WebappReport.jasper"));
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());
或直接使用JasperReport的XML文件
JasperReport jasperReport = JasperCompileManager.compileReport(context.getRealPath("/reports/WebappReport.jrxml"));

设置输入的一些参数
Map parameters = new HashMap();

填充报表
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new WebappDataSourceList());

导出HTML格式:
JRHtmlExporter exporter = new JRHtmlExporter();
request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,jasperPrint);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);--使用报表(JasperPrint)
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);--输出到流
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,"image?image=");
exporter.exportReport();

PDF Export:
bytes = JasperExportManager.exportReportToPdf(jasperPrint);?
response.setHeader("Content-Disposition","attachment;filename=JasperPDF.pdf");
// 设置页面的输出格式
response.setHeader("Content-Type", "application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();

XLS Export:
ServletOutputStream outs = response.getOutputStream();
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,reportFile + xlsFileName); --输出到文件
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outs);--输出到流
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE);--每页使用一个SHEET
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE);--移除空白
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);--背景色
exporter.exportReport();

主从报表:
ServletOutputStream out = response.getOutputStream();
JasperReport subReport = JasperCompileManager.compileReport(context.getRealPath("/reports/child.jrxml"));
JasperReport fatherReport = JasperCompileManager.compileReport(context.getRealPath("/reports/father.jrxml"));--定义主报表样式
Map parameters = new HashMap();
ArrayList listf = new ArrayList();--主报表的数据
ArrayList listc = new ArrayList();--子报表的数据
??
parameters.put("Title", "SubReport");
parameters.put("SubReportMap", new JRBeanCollectionDataSource(listc));--子报表的数据
parameters.put("ChildReport", subReport);

JasperPrint jasperPrint = JasperFillManager.fillReport(fatherReport,parameters, new JRBeanCollectionDataSource(listf));
?
JRHtmlExporter exporter = new JRHtmlExporter();

request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,jasperPrint);

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,"image?image=");
exporter.exportReport();

子报表如何得到输入的参数:
首先是将参数传入到主报表中,再在主报表中将相应的参数传给子报表。因为在主报表中定义子报表时可以定义参数给子报表
并且要将相应的表格样式文件传给子报表
使用方法:
(1)net.sf.jasperreports.engine.JasperReport。
JasperReport subReport = JasperCompileManager.compileReport(context.getRealPath("/reports/child.jrxml"));
parameters.put("ChildReport", subReport);
(2)在样式中直接使用文件得到子报表的样式。

相关的定义:
1.参数
参数是传入到报表填充操作的对象引用
参数可的构造SQL查询
2.数据源
JasperReports使用一个叫JRDataSource的接口来支持各种类型的数据源
3.字段
报表字段代表从数据源映射数据到报表产生程序的唯一途径
4.表达式
表达式是JasperReports的强大特点,它们可被声明的报表变量使用来执行各种计算。
5.变量
报表变量是才一个表达式开始时建立的特殊的对象。
变量可以在相应的表达式中执行内置类型的计算,如:count,sum,average,lowest,highest等
6.报表区
当我们建立一个报表设计时,我们需要定义报表区的内容和布局。报表设计的整个结构基于以下报表区<title>, <pageHeader>, <columnHeader>, <groupHeader>, <detail>, <groupFooter>, <columnFoter>, <pageFooter>, <summary>.
7.组
组代表了在报表上组织数据的一个灵活的方式,当我们填充一个报表时,JasperReports引擎可字段检测组表达式<groupFooter> 和 <groupHeader>等是否完整。
8.字体和Unicode支持
你可以用任何语言来创建你的报表。
9. Scriptlets
Scriptlets是java代码序列,在每次报表事件发生时被执行。通过 scriptlets,用户可以影响被报表变量存储的值。
当我们创建一个JasperReports scriptlet类时,开发者要实现或重载几个方法,象:beforeReportInit(), afterReportInit(), beforePageInit(), afterPageInit(), beforeGroupInit(), afterGroupInit()等,这些方法当填充报表时在适当的时候被报表引擎调用。
10.子报表
子报表是报表产生工具的重要特征,它允许更复杂报表的创建并简化设计工作。
子报表在创建主从报表时非常有用。

附:

  1. public String printResumeToPDF() throws Exception {   
  2.         String jrxmlPath = getServletContext().getRealPath(   
  3.                 "/jasper/sovoResume.jrxml");   
  4.         List resumeInfo = getServMgr().getUserService().getResumeForDataSource(   
  5.                 getLoginUserId());   
  6.         Map<String, String> parameters = new HashMap<String, String>();   
  7.         parameters.put("SUBREPORT_DIR", getServletContext().getRealPath(   
  8.                 "/jasper"));   
  9.         JRDataSource dataSource = new JRBeanCollectionDataSource(resumeInfo);   
  10.         JasperReport report = JasperCompileManager.compileReport(jrxmlPath);   
  11.         JasperPrint jasperPrint = JasperFillManager.fillReport(report,   
  12.                 parameters, dataSource);   
  13.         HttpServletResponse response = ServletActionContext.getResponse();   
  14.         OutputStream ouputStream = response.getOutputStream();   
  15.         // 设置相应参数,以附件形式保存PDF   
  16.         response.setContentType("application/pdf");   
  17.         response.setCharacterEncoding("UTF-8");   
  18.         response.setHeader("Content-Disposition""attachment; filename=\""  
  19.                 + URLEncoder.encode(getLoginUserRealName() + "的个人简历""UTF-8")   
  20.                 + ".pdf\"");   
  21.         // 使用JRPdfExproter导出器导出pdf   
  22.         JRPdfExporter exporter = new JRPdfExporter();   
  23.         exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);   
  24.         exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);   
  25.         exporter.exportReport();// 导出   
  26.         ouputStream.close();// 关闭流   
  27.         return null;   
  28.     }  

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值