本文主要介绍使用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文件操作。
06 |
private void exportHtml(
HttpServletResponse response,Connection conn){ |
09 |
response.setCharacterEncoding( "UTF-8" ); |
10 |
ServletContext
servletContext= this .getServletConfig().getServletContext(); |
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(); |
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) { |
24 |
} catch (IOException
e){ |
导出到excel文件操作。
06 |
private void exportExcel(
HttpServletResponse response,Connection conn){ |
08 |
response.setCharacterEncoding( "UTF-8" ); |
09 |
ServletContext
servletContext= this .getServletConfig().getServletContext(); |
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); |
20 |
response.setHeader( "Content-Disposition" , "attachment;filename=first.xls" ); |
21 |
response.setContentType( "application/vnd_ms-excel" ); |
22 |
exporter.exportReport(); |
23 |
} catch (JRException
e) { |
25 |
} catch (IOException
e){ |
导出到pdf文件操作。
06 |
private void exportPdf(HttpServletResponse
response, Connection conn) { |
08 |
ServletContext
servletContext= this .getServletConfig().getServletContext(); |
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()); |
17 |
response.setHeader( "Content-Disposition" , "attachment;filename=first.pdf" ); |
18 |
response.setContentType( "application/pdf" ); |
19 |
response.setCharacterEncoding( "UTF-8" ); |
20 |
exporter.exportReport(); |
22 |
} catch (Exception
e) { |
到了这里就已经完成功能的实现了。在iReport中读者可以使用可视化组件,设计出漂亮美观的报表。