文档章节

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

立志尚早
 立志尚早
发布于 2013/04/15 16:27
字数 773
阅读 11261
收藏 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中读者可以使用可视化组件,设计出漂亮美观的报表。

 

 

 

 

 

 



 

 

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
立志尚早
粉丝 23
博文 32
码字总数 20028
作品 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
EasyPoi 3.3.0 发布,可能是最后一个支持 JDK 6/7 的版本

此次更新内容:重点是 多层导出支持版本 支持N层导出了 支持国际化接口 修复了$fe的bug 删除了缓存,自己实现吧 修复bysax空字符串跳过的问题 增加了是否固定表头的参数 !!吞没了合并单元格错...

Anotherjueyue
09/26
0
0
struts2笔记——整合JasperReports

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

梅_95
2016/08/16
16
0
WEB 打印的相关技术分析

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

晨曦之光
2012/03/09
314
0
EasyPoi 3.0.2 版本发布,Excel 和 Word 简易工具类

Excel 和 Word 简易工具类发布了3.0.2 版本,小版本升级,更新如下: word 遍历样式复制 导入校验返回增强 导入校验,校验组参数 Excel--html图标不在单独生成 Excel模板导出加入了图片支持 修复...

Anotherjueyue
2017/09/28
922
1
新一代的HTML5/JS UI控件Wijmo Enterprise 2015 v3全新发布|附下载

Wijmo Enterprise是为企业应用程序开发而推出的一系列包含HTML5和JavaScript的开发控件。 其中包含了金融图表和FlexSheet以及先进的JavaScript控件(Wijmo 5)和经典的jQuery小部件(Wijmo 3...

Miss_Hello_World
2015/12/09
66
0

没有更多内容

加载失败,请刷新页面

加载更多

区块链教程以太坊源码分析chain-indexer区块链索引一

兄弟连区块链教程以太坊源码分析chain-indexer区块链索引一 chain_indexer 区块链索引 chain_indexer.go 源码解析 chain_indexer 顾名思义, 就是用来给区块链创建索引的功能。 之前在eth协议...

兄弟连区块链入门教程
3分钟前
0
0
社会化分享插件集成分享

一.前提摘要 社会化分享每个app必备的推广需求,无论是拉新,邀请,游戏奖励,等等都离不开分享的影子,下面我们介绍下社会化分享的插件; 首先要说下,现在的社交App,社区App等,国内外的...

佳妮
4分钟前
0
0
IOC 之 Spring 统一资源加载策略

统一资源:Resource org.springframework.core.io.Resource 为 Spring 框架所有资源的抽象和访问接口 它继承 org.springframework.core.io.InputStreamSource接口 作为所有资源的统一抽象,S...

职业搬砖20年
4分钟前
0
0
Python爬虫实战入门一:工具准备

一、基础知识 使用Python编写爬虫,当然至少得了解Python基本的语法,了解: 基本数据结构 数据类型 控制流 函数的使用 模块的使用 不需要过多过深的Python知识,仅此而已。 个人推荐《Pytho...

糖宝lsh
8分钟前
0
0
Hanlp中使用纯JAVA实现CRF分词

Hanlp中使用纯JAVA实现CRF分词 与基于隐马尔可夫模型的最短路径分词、N-最短路径分词相比,基于条件随机场(CRF)的分词对未登录词有更好的支持。本文(HanLP)使用纯Java实现CRF模型的读取与...

左手的倒影
10分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部