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

本文主要介绍使用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

92fd389deb333aebb02b253677653ee0.png

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

3.连接数据库

13b9b1f76f0b92f5eabe4787cb3f2b4b.png

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

554f78af653267b787cec4c97b564b44.png

new一个新的数据源

c3226832eabcf57b1179ea90259eb6b5.png

选择JDBC Connection ,设置配置

f3e73a3b37b0c43fbda9f0de4b55018e.png

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

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

点击

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

d1fbf6b6e87774098ff8fc6b12cde6b0.png

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

cfd7c68965e1a233014585de475a6d62.png

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

aee7a61f23c542b04d30cb9c829d112b.png

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

b41ef01dfda711ad8daf9b0702d14305.png

预览结果如下。

a0f9bb5191cafe62085e4542471147cf.png

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

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

1.点击

adde85775f0bfd14778d56c339762fab.png,将编译生成.jasper文件。

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

da2f78a7a50a0b5489fc98ef7ee52feb.png

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

be6cbb6706841f6f10cde1d74b7b6d43.png

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

6bbe836c46935ddadea995b407ef8ee4.png

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

操作之前要先连接数据库

92bee1177d0e865a8d8483164fbc15fe.png

8a2664b428d566cbfbbc2664120a9bf7.png

导出到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中读者可以使用可视化组件,设计出漂亮美观的报表。

0.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值