jasperreport整合structs2导出PDF,Excel等报表
2014-03-05 15:00
609 查看
今天实现了structs2导出PDF报表和Excel报表。
这是structs2导出PDF的报表:
public String CategoryReport(){
try {
HttpServletResponse response = ServletActionContext.getResponse();
String reportSource;
Map params = new HashMap();
category.setTotalSize(categoryService.count());
myList=categoryService.findCurrentData(category);
for(Category s:myList){
System.out.println(s.getName()+"------"+s.getDescri());
}
reportSource = ServletActionContext.getServletContext().getRealPath("/jasper/report5_3.jrxml");
File parent = new File(reportSource).getParentFile();
JasperCompileManager.compileReportToFile(reportSource, new File(parent, "compiled_jasper_template.jasper")
.getAbsolutePath());
OutputStream outputStream=response.getOutputStream();
File reportFile = new File(ServletActionContext.getServletContext().getRealPath("/jasper/compiled_jasper_template.jasper"));
if (!reportFile.exists()){
throw new JRRuntimeException("File dispatch_report.jasper not found.");
}
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
JRBeanCollectionDataSource dataSource=new JRBeanCollectionDataSource(myList);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,params, dataSource);
JRPdfExporter pdfExporter=new JRPdfExporter();
pdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
pdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream);
response.setContentType("application/pdf");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode("Medicine报表", "UTF-8") + ".pdf\"");
pdfExporter.exportReport();
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}首先是我们用Ireport制作好的报表模板,我的报表模板是:
然后我们可以得到一个JasperPrint对象来打印出数据来,而JasperPrint对象是通过JasperFillManager类来得到。
最后通过 JRPdfExporter对象实现导出报表就可以了啊。
这是导出PDF,Excel报表用到的几个类。
1. net.sf.jasperreports.engine.JasperCompileManager类。
使用这个类的几个静态方法即可完成对报表的编译工作(具体参见api文档)
编译完成后可以JasperCompileManager有两种处理方式:
1> 返回一个JasperReport对象
2> 在.jrxml文件所在的目录生成一个.jasper文件
这两种方式是由程序员自己选择的。不过我比较倾向使用.jasper文件,毕竟报表的结构不是每天都在改动,所以每次重新编译报表并不是很划算。
2. net.sf.jasperreports.engine.JasperFillManager类
这个类的作用是用数据填充报表。它可以使用JasperReport对象也可以使用。jasper文件做为报表模板。
它同样有2中处理方式:
1> 返回一个JsaperPrint对象。
2> 在.jasper文件所在目录生成一个.jrprint文件
这个类使用net.sf.jasperreports.engine.JRDataSource接口的实现做为数据源。任何实现了JRDataSource的类均可做为数据源使用
在net.sf.jasperreports.engine.data包中定义了一些数据源,可根据自己的需要选择。这里我使用的是JRTableModelDataSource做为
数据源(因为我的报表还要显示在Table中)。
3. net.sf.jasperreports.engine.JasperPrintManager和net.sf.jasperreports.engine.JasperExportManager
者两个类的作用是打印、导出报表
他们使用 JasperPrint 和 .jrprint文件做为输入。
可以根据自己的需要使用里面的方法。
这是structs2导出PDF的报表:
public String CategoryReport(){
try {
HttpServletResponse response = ServletActionContext.getResponse();
String reportSource;
Map params = new HashMap();
category.setTotalSize(categoryService.count());
myList=categoryService.findCurrentData(category);
for(Category s:myList){
System.out.println(s.getName()+"------"+s.getDescri());
}
reportSource = ServletActionContext.getServletContext().getRealPath("/jasper/report5_3.jrxml");
File parent = new File(reportSource).getParentFile();
JasperCompileManager.compileReportToFile(reportSource, new File(parent, "compiled_jasper_template.jasper")
.getAbsolutePath());
OutputStream outputStream=response.getOutputStream();
File reportFile = new File(ServletActionContext.getServletContext().getRealPath("/jasper/compiled_jasper_template.jasper"));
if (!reportFile.exists()){
throw new JRRuntimeException("File dispatch_report.jasper not found.");
}
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
JRBeanCollectionDataSource dataSource=new JRBeanCollectionDataSource(myList);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,params, dataSource);
JRPdfExporter pdfExporter=new JRPdfExporter();
pdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
pdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream);
response.setContentType("application/pdf");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode("Medicine报表", "UTF-8") + ".pdf\"");
pdfExporter.exportReport();
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}首先是我们用Ireport制作好的报表模板,我的报表模板是:
report5_3.jrxml通过JasperCompileManager将报表模板编译成...jasper的文件, 我们可以创建一个JasperReport的对象,通过JRBeanCollectionDataSource 得到报表输出的数据源,这段代码中myList就是一个从后台获取数据的ArrayList。
然后我们可以得到一个JasperPrint对象来打印出数据来,而JasperPrint对象是通过JasperFillManager类来得到。
最后通过 JRPdfExporter对象实现导出报表就可以了啊。
这是导出PDF,Excel报表用到的几个类。
1. net.sf.jasperreports.engine.JasperCompileManager类。
使用这个类的几个静态方法即可完成对报表的编译工作(具体参见api文档)
编译完成后可以JasperCompileManager有两种处理方式:
1> 返回一个JasperReport对象
2> 在.jrxml文件所在的目录生成一个.jasper文件
这两种方式是由程序员自己选择的。不过我比较倾向使用.jasper文件,毕竟报表的结构不是每天都在改动,所以每次重新编译报表并不是很划算。
2. net.sf.jasperreports.engine.JasperFillManager类
这个类的作用是用数据填充报表。它可以使用JasperReport对象也可以使用。jasper文件做为报表模板。
它同样有2中处理方式:
1> 返回一个JsaperPrint对象。
2> 在.jasper文件所在目录生成一个.jrprint文件
这个类使用net.sf.jasperreports.engine.JRDataSource接口的实现做为数据源。任何实现了JRDataSource的类均可做为数据源使用
在net.sf.jasperreports.engine.data包中定义了一些数据源,可根据自己的需要选择。这里我使用的是JRTableModelDataSource做为
数据源(因为我的报表还要显示在Table中)。
3. net.sf.jasperreports.engine.JasperPrintManager和net.sf.jasperreports.engine.JasperExportManager
者两个类的作用是打印、导出报表
他们使用 JasperPrint 和 .jrprint文件做为输入。
可以根据自己的需要使用里面的方法。
相关文章推荐
- jasperreport生成html,Excel,PDF报表,数据源使用List
- ireport设计导出模板,Jasperreport导出PDF、HTML、Excel
- jasperreport + ireport 导出各种类型文件(word,excel,html,pdf,打印) .
- JasperReport报表技术导出PDF报表(使用IReport设计工具 )
- jfreechart,pdf生成组件iText,jasper report报表组件及POI操作excel等在企业软件开发中常遇到的第三方应用
- iReport+JasperReport实现数据库记录导出到html、excel、pdf文档
- ssh三大框架简单整合,struts2整合JasperReport报表、图表,解决HTML显示图片不出来,PDF中文不显示的问题
- 水晶报表(Crystal Report)中的数据导为Excel、PDF、Word等
- struts2与JasperReport整合应用中解决PDF中文不显示问题(让我烦恼了半天)
- java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.
- 使用jasperreports制作报表(导出pdf excel html)
- ReportViewer报表导出成Excel,Image,PDF---LocalReport.Render
- 使用BO JAVA SDK打开WEBI报表,并进行PDF、EXCEL、CSV、HTML导出
- Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表
- JasperReport+iReport报表中同一个excel中建立多个sheet页以及自定义命名sheet的名称
- 水晶报表导出PDF or Excel
- iReport 和 Jasperreport整合开发web报表向导(1)
- iReport 和 Jasperreport整合开发web报表向导(3)
- 【iReport+JasperReport】2.在Java工程中利用jasper导出PDF报表
- Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表