jasperreport导出报表到html、pdf

本文介绍了如何使用JFreeChart和JasperReport库将报表导出为HTML和PDF格式。涉及的依赖包括jfreechart、jcommon、gnujaxp以及jasperreports等多个组件。同时,文章提到了web.xml的配置细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

JFreeChart需要包: jfreechart-1.0.3.jar jcommon-1.0.6.jargnujaxp.jar

JasperReport需要包:

commons-beanutils-1.7.jar;commons-collections-2.1.jar;commons-digester-1.7.jar;

commons-logging-1.0.2.jar;commons-logging-api-1.0.2.jar;itext-1.3.1.jar;

jasperreports-1.3.3.jar;jdt-compiler-3.1.1.jar;jxl-2.6.jar;png-encoder-1.5.jar;poi-2.0-final-20040126.jar

 

一、导出报表到html

 

InputStream inputStream = ServletActionContext.getServletContext().getResourceAsStream("/report/xxx.jasper");
Collection<xxxo> data=xxxService.getData(params);
Map<Object,Object> map=xxxService.getMap(startTime, endTime);

JRBeanCollectionDataSource dataSource=new JRBeanCollectionDataSource(data);
//填充报表
JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream,map, dataSource);
//设置输出类型及报表的内置参数
response.setContentType("text/html");
OutputStream outputStream=response.getOutputStream();
ReportXHtmlExporter htmlExporter=new ReportXHtmlExporter(page,jasperPrint);
request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,jasperPrint);
htmlExporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);
htmlExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream);
if(jasperPrint.getPages().size()>1){
	htmlExporter.setParameter(JRExporterParameter.PAGE_INDEX, 1);
}
htmlExporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);
htmlExporter.exportReport();
outputStream.flush();
outputStream.close();
 

二、导出到PDF

 

OutputStream outputStream=response.getOutputStream();
File reportFile = new File(ServletActionContext.getServletContext().getRealPath("/report/xxx.jasper"));
if (!reportFile.exists()){
	throw new JRRuntimeException("File dispatch_report.jasper not found.");
}
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());

//javabean数据源
Collection<xxx> data=xxxService.getData(params);
Map<Object,Object> map=xxxService.getMap(startTime, endTime);
JRBeanCollectionDataSource dataSource=new JRBeanCollectionDataSource(data);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,map, 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("XXX报表", "UTF-8") + ".pdf\""); 
pdfExporter.exportReport();
outputStream.flush();
outputStream.close();
 

三、web.xml配置

 

<!--JasperReport显示图片的,象素图片-->
	<servlet>
		<servlet-name>ImageServlet</servlet-name>
		<servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>ImageServlet</servlet-name>
		<!-- /report/image路径,report表示struts中的表空间(具体就看url请求的路径),image表示Action文件里配置image?image=问号前的image相同-->
		<url-pattern>/report/image</url-pattern>
	</servlet-mapping>
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值