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

来源:互联网 发布:搜狗五笔输入法mac版 编辑:程序博客网 时间:2024/04/29 02:20

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

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

而maven仓库中已经没有iTextAsian.jar了,那我们自己下载一个,安装到自己的maven中去就行。如下:命令行执行mvn install:install-file -DgroupId=com.lowagie -DartifactId=itextasian -Dversion=1.0 -Dpackaging=jar -Dfile=D:\JarTemp\iTextAsian.jar 就可以了。

下面开始利用ireport制作文件模板了。

1.下载安装iReport。

此处注意:如果你安装的jdk版本为1.8,那么ireport5.6.0以下的版本你是无法运行的,这时我们需要修改安装目录下etc目录下的ireport.conf配置文件,将jdkhome处前的#注释符合去掉,然后jdkhome改为自己的jdk1.7安装目录,如:jdkhome="C:\Program Files\Java\jdk1.7.0_21"

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

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

3.连接数据库


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


点击new新建一个数据源。

选择JDBC Connection ,设置配置,配置好之后test一下。

Test成功后,保存配置。

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

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

这里使用了参数sid的查询条件,即iReport界面左边parameters里边的sid。如下图所示


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



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


6.预览报表,选择菜单栏上的preview

预览结果如下:


注意:如果查询的结果为null,而你想要上面图片的显示为空白效果,就选中textfield中属性,将blank when null选中即可。如下图所示:


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

1.点击,将编译生成.jasper文件。(改动之后的模板需要将编译文件先删除)

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

3编写jsp文件,跳转到处理导出文件的 servlet或者action中。

4.编写导出处理类。

操作之前要先连接数据库


因为我是用action处理,所以需要获取request和response,如下:


下面导出为pdf文件:

 try {
            //得到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();
        }
到了这里就已经完成功能的实现了。

0 0
原创粉丝点击