您的位置:首页 > 编程语言 > ASP

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

2013-11-05 09:39 786 查看
本文主要介绍使用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文件操作。

01
/**
02
* 导出为html文件
03
* @param request
04
* @param response
05
*/
06
private

void
exportHtml( HttpServletResponse response,Connection conn){
07
   
08
   
try

{
09
  
response.setCharacterEncoding(
"UTF-8"
);
10
  
ServletContext servletContext=
this
.getServletConfig().getServletContext();
11
  
//得到jasper文件
12
  
File jasperFile=
new

File(servletContext.getRealPath(
"/jasper/Report.jasper"
));
13
  
JasperReport jasperReport =(JasperReport)JRLoader.loadObject(jasperFile.getPath());
14
  
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
null
,conn);
15
  
JRHtmlExporter exporter =
new
JRHtmlExporter();
16
  
17
  
exporter.setParameter(JRHtmlExporterParameter.JASPER_PRINT, jasperPrint);
18
  
exporter.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER,response.getWriter());
19
  
exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);
20
  
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING,
"utf-8"
);
21
  
exporter.exportReport();
22
   
}

catch
(JRException e) {
23
  
e.printStackTrace();
24
   
}

catch
(IOException e){
25
  
e.printStackTrace();
26
   
}
27
}
导出到excel文件操作。

01
/**
02
* 导出为excel文件
03
* @param request
04
* @param response
05
*/
06
private

void
exportExcel( HttpServletResponse response,Connection conn){
07
   
try

{
08
  
response.setCharacterEncoding(
"UTF-8"
);
09
  
ServletContext servletContext=
this
.getServletConfig().getServletContext();
10
  
//得到jasper文件
11
  
File jasperFile=
new

File(servletContext.getRealPath(
"/jasper/Report.jasper"
));
12
  
JasperReport jasperReport= (JasperReport)JRLoader.loadObject(jasperFile.getPath());
13
  
JasperPrint jasperPrint=JasperFillManager.fillReport(jasperReport,
null
,conn);
14
  
JRXlsExporter exporter=
new

JRXlsExporter();
15
  
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
16
  
exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, response.getOutputStream());
17
  
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
18
  
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
19
20
  
response.setHeader(
"Content-Disposition"
,
"attachment;filename=first.xls"
);
21
  
response.setContentType(
"application/vnd_ms-excel"
);
22
  
exporter.exportReport();
23
   
}

catch
(JRException e) {
24
  
e.printStackTrace();
25
   
}

catch
(IOException e){
26
  
e.printStackTrace();
27
   
}

28
}
导出到pdf文件操作。

01
/**
02
* 导出为pdf文件
03
* @param response
04
* @param conn
05
*/
06
private

void
exportPdf(HttpServletResponse response, Connection conn) {
07
   
try

{
08
  
ServletContext servletContext=
this
.getServletConfig().getServletContext();
09
  
//得到jasper文件
10
  
File jasperFile=
new

File(servletContext.getRealPath(
"/jasper/Report.jasper"
));
11
  
JasperReport jasperReport= (JasperReport)JRLoader.loadObject(jasperFile.getPath());
12
  
JasperPrint jasperPrint=JasperFillManager.fillReport(jasperReport,
null
,conn);
13
  
JRPdfExporter exporter =
new
JRPdfExporter();

14
  
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
15
  
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
16
  
17
  
response.setHeader(
"Content-Disposition"
,
"attachment;filename=first.pdf"
);
18
  
response.setContentType(
"application/pdf"
);
19
  
response.setCharacterEncoding(
"UTF-8"
);
20
  
exporter.exportReport();
21
  
22
   
}

catch
(Exception e) {
23
  
e.printStackTrace();
24
   
}
25
}
到了这里就已经完成功能的实现了。在iReport中读者可以使用可视化组件,设计出漂亮美观的报表。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: