文档章节

iReport+JasperReport实现数据库记录导出到html、excel、pdf文档

立志尚早
 立志尚早
发布于 2013/04/15 16:27
字数 773
阅读 1.2W
收藏 24

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

本文主要介绍使用iReport以可视化的方式来生成JasperReport所使用的报表格式文件,并通过JasperReport提供的API将数据导出到html、excel、pdf等格式的文件中。

在这里iReport的使用版本为iReport-5.0.4。JasperReport使用的是5.0.4。由于导出到pdf,JasperReport用到iText库,所以这里使用的iText-2.1.7版本。当然不要忘了iTextAsian.jar对中文的支持。

实现步骤如下:

1.下载安装iReport-5.0.4。(地址此处省略,自己google)

2.打开iReport,新建文件:文件—>new

选择Blank A4,点击Open this Template,完成报表的创建

3.连接数据库

点击Report Datasources图标,弹出下图对话框。

new一个新的数据源

选择JDBC Connection ,设置配置


Test成功后,保存配置。这里使用mysql数据库,数据库为surveysdb。

4.报表连接数据库查询。

点击,设置报表查询的语句,点击read fields会显示表字段结构

点击ok,iReport界面左边Fileds会出现数据库表字段。如下图所示

5。拖放字段,设计报表格式。将表中字段拖入到detail区域,增加列明和标题,如下图所示。

6.预览报表,选择菜单栏上的preview,选择要预览的格式,这里选择HTML。点击下图中的preview

预览结果如下。

若选择excel格式,可导出excel格式到电脑上。

下面就用JasperReport API根据iReport生成的文件将记录导出到各类文件中。

1.点击,将编译生成.jasper文件。

2.将jasper文件拷贝到web工程下

3编写index.jsp文件,跳转到处理导出文件的 servlet中。

4.项目需要引入的架包如下图所示。

 

下面给大家展示处理各种文件导出的代码。

操作之前要先连接数据库

 

 

导出到Html文件操作。

/**
	 * 导出为html文件
	 * @param request
	 * @param response
	 */
	private void exportHtml( HttpServletResponse response,Connection conn){
		
		try {
			response.setCharacterEncoding("UTF-8");  
			ServletContext servletContext=this.getServletConfig().getServletContext();
			//得到jasper文件
			File jasperFile=new File(servletContext.getRealPath("/jasper/Report.jasper"));
			JasperReport jasperReport =(JasperReport)JRLoader.loadObject(jasperFile.getPath());
			JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,conn);
			JRHtmlExporter exporter = new JRHtmlExporter();
			
			exporter.setParameter(JRHtmlExporterParameter.JASPER_PRINT, jasperPrint);
			exporter.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER,response.getWriter());
			exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);
			exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "utf-8");
			exporter.exportReport();
		} catch (JRException e) {
			e.printStackTrace();
		} catch (IOException e){
			e.printStackTrace();
		}
	}

 

导出到excel文件操作。

/**
	 * 导出为excel文件
	 * @param request
	 * @param response
	 */
	private void exportExcel( HttpServletResponse response,Connection conn){
		try {
			response.setCharacterEncoding("UTF-8");  
			ServletContext servletContext=this.getServletConfig().getServletContext();
			//得到jasper文件
			File jasperFile=new File(servletContext.getRealPath("/jasper/Report.jasper"));
			JasperReport jasperReport= (JasperReport)JRLoader.loadObject(jasperFile.getPath());
			JasperPrint jasperPrint=JasperFillManager.fillReport(jasperReport,null,conn);
			JRXlsExporter exporter=new JRXlsExporter();
			exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
			exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, response.getOutputStream());
			exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
			exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);

			response.setHeader("Content-Disposition", "attachment;filename=first.xls");
			response.setContentType("application/vnd_ms-excel");
			exporter.exportReport();
		} catch (JRException e) {
			e.printStackTrace();
		} catch (IOException e){
			e.printStackTrace();
		} 
	}

 

导出到pdf文件操作。

/**
	 * 导出为pdf文件
	 * @param response
	 * @param conn
	 */
	private void exportPdf(HttpServletResponse response, Connection conn) {
		try {
			ServletContext servletContext=this.getServletConfig().getServletContext();
			//得到jasper文件
			File jasperFile=new File(servletContext.getRealPath("/jasper/Report.jasper"));
			JasperReport jasperReport= (JasperReport)JRLoader.loadObject(jasperFile.getPath());
			JasperPrint jasperPrint=JasperFillManager.fillReport(jasperReport,null,conn);
			JRPdfExporter exporter = new JRPdfExporter();  
			exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
			exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
			
			response.setHeader("Content-Disposition", "attachment;filename=first.pdf");
			response.setContentType("application/pdf");
			response.setCharacterEncoding("UTF-8");  
			exporter.exportReport();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 

 

到了这里就已经完成功能的实现了。在iReport中读者可以使用可视化组件,设计出漂亮美观的报表。

 

 

 

 

 

 



 

 

 

 

 

 

© 著作权归作者所有

立志尚早

立志尚早

粉丝 25
博文 40
码字总数 24803
作品 0
浦东
程序员
私信 提问
加载中

评论(3)

R
Report初學者
版主,我想請問一下,如果我在報表上加parameter來控制顯示的內容
這是我的sql : select * from COMPANY_EMPLOYEE where EMPLOYEE_ID like $P{Account}
$P{Account} 就是我的參數,
如果使用您所寫的範例來實作,我該如何改寫,可以請您指點嗎? 方便的話有sample更好,感謝
信箱 : gm79405gm@gmail.com
学习report
能发一个源码吗,最近在学习jaspereport,谢谢 ,邮箱 540195111@qq.com
翔宇0720
mark
GrapeCity Documents (服务端文档API组件) V3.0 发布

近日,葡萄城GrapeCity Documents(服务端文档API组件)V3.0 正式发布! 该版本针对 Excel 文档、PDF 文档和 Word 文档的 API 全面更新,加入了用于生成 Excel 的报表模板、支持 Excel 2016...

葡萄城技术团队
2019/12/23
1K
1
GrapeCity Documents (服务端文档API组件) V3.0 正式发布

近日,葡萄城GrapeCity Documents(服务端文档API组件)V3.0 正式发布! 该版本针对 Excel 文档、PDF 文档和 Word 文档的 API 全面更新,加入了用于生成 Excel 的报表模板、支持 Excel 2016...

powertoolsteam
2019/12/23
0
0
个人永久性免费-Excel催化剂功能第115波-word、pdf、Excel、ppt、html等文件互转

2020年第一波更新,再来个重量级的刚需场景,文件互转。有Excel催化剂后,不再需要频繁到处找寻各种网页在线版的转换操作,数据安全很重要,不要轻易将自己文件上传到网上,哪天出事了,没人...

osc_56wm84nt
01/02
21
0
WEB 打印的相关技术分析

文/谢康 做Web开发的人员一定都会面临一个共同的难题,那就是打印。的确,相对于Windows桌面应用程序来讲,Web应用程序的打印有种种限制,技术人员在项目开发过程中经常会遇到用户这样或那样...

晨曦之光
2012/03/09
418
0
struts2笔记——整合JasperReports

JasperReports,Jasper .[dʒæspə]碧玉 16.1 JasperReports简介 JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成Excel、PDF、HTML或者XML格式。这个工...

梅_95
2016/08/16
33
0

没有更多内容

加载失败,请刷新页面

加载更多

君子动手不动口,阿里云喊你做云上体验官啦!

想要免费搭建云上博客?想要玩转全云端开发?想要挑战AI经典命题?想要7天进阶成为云计算专家?想要初始化你的云原生工程?快来阿里云 Hands-on Labs! Hands-on Labs 是阿里云全新推出的云上...

osc_18ydlfr7
10分钟前
16
0
CAD图纸转换成图片格式后,如何快速分享给同事?

我们常见的图片格式有PNG与JPG两种,这两种图片在很多平台上都能兼容,所以使用的几率特别高,很多办公室人员都会遇到把CAD图纸转换成PNG与JPG格式的工作。那么我们把CAD图纸转换成图片格式后...

真不莲
11分钟前
14
0
测试真的是一个无聊又没前途的岗位吗?是吗?不是吗?

同事小王:你第一份工作同事咋样?为什么离职? 测试小张:第一份工作就是测试,微软外包。别人在测试完了以后不知道干嘛,我抓紧时间看vs的源代码,抓紧时间看pheonix的源代码,抓紧时间看微...

osc_3zq7ptf4
12分钟前
13
0
怎么在电脑上进行视频截图?视频截图的简单步骤介绍

怎么在电脑上进行视频截图?小编最近在网上看到不少关于郑爽的话题文章,而不少文章都是通过视频截图的形式把她以前的影视作品截图下来,然后对她的演技和人品进行议论和评判。如果大家也想对...

玛哈菲亚
12分钟前
9
0
CAAI云课堂丨第十三期,北京交通大学人工智能研究院院长于剑开讲

     开启云端互动,CAAI带你与名师面对面。中国人工智能学会积极探索学术交流创新模式,围绕AI+学术、AI+技术以屏幕架起连接智能科技知识的桥梁,探索新型模式,开设CAAI云课堂等系列活...

osc_j5pkc521
12分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部