博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5.把报表集成到Web应用程序中-生成网页和导出两种方式
阅读量:6949 次
发布时间:2019-06-27

本文共 4637 字,大约阅读时间需要 15 分钟。

转自:https://wenku.baidu.com/view/104156f9770bf78a65295462.html

第四部分,把报表集成到Web应用程序中

用MyEclipse新建一个Web Project,在WebRoot下新建一个reports文件夹,用来放ireport生成的jasper文件

找到前边保存ireport报表的路径,报表在预览后,生成jasper文件,如图

把这个deptReport.jasper文件复制到Web项目里的reports文件夹中

导入JasperReport的包,包可以从以下路径找到.

Ireport安装路径\iReport-3.7.6\ireport\modules\ext

把这里所有的包引到Web项目里,引入oracle的jdbc驱动,接下来进行编程,以Servlet为例

1,生成报表并且以HTML形式在网页上显示

Servlet的主要逻辑代码如下:

1 request.setCharacterEncoding("utf-8"); 2         // 接收查询参数,将来这个参数就是我们在报表中定义的parDname 3         String deptName = request.getParameter("dname"); 4  5         // 报表文件路径,我们用ireport做的jasper文件路径 6         // JasperReport需要jasper文件的真实路径 7         String reportPath = request.getSession().getServletContext() 8                 .getRealPath("/reports/deptReport.jasper"); 9         // 报表参数,jasper文件可能不只一个参数10 // 在程序里,用一个Map对象,向jasper文件传递他需要的参数11         Map reportParameters = new HashMap();12         reportParameters.put("parDname", deptName);13         // 报表连数据库所用的数据连接14         // 因为报表直接以数据库为数据源,所以在这里需要给jasper文件一个jdbc连接15         Connection con = null;16         // 清空响应流17         response.reset();18         // 设置输出格式19         response.setContentType("application/html");20         // 创建JDBC连接21         Class.forName("oracle.jdbc.OracleDriver");22         con = DriverManager.getConnection(23                 "jdbc:oracle:thin:@oracle10:1521:oracle", "scott", "tiger");24         // JasperReport提供的类,用于生成一个HTML文件25         JasperRunManager.runReportToHtmlFile(reportPath, reportParameters, con);26         response.sendRedirect(request.getContextPath()27                 + "/reports/deptReport.html");28 /*29  * 如果要在网页上显示PDF文件,把前两句去掉,放开这段注释30          * ServletOutputStream out = response.getOutputStream();31          * //从jasper报表生成PDF字节 32          * byte[] pdfBytes = JasperRunManager.runReportToPdf(reportPath, reportParameters, con);33          * //设置输出内容长度 34 * response.setContentLength(pdfBytes.length); //将PDF写入报表35          * out.write(pdfBytes, 0, pdfBytes.length);36          * out.flush();37          * out.close();38          */39 40         41         // 关闭数据连接42     con.close();

这里只写出逻辑代码,实际用的时候,加上各种异常的处理。

2,         导出PDF和Excel文件

Servlet的逻辑代码如下,还是没写异常处理,开发时加上

1 // 接收查询参数 2         request.setCharacterEncoding("utf-8"); 3         String deptName = request.getParameter("dname"); 4 // 在请求的时候多加一个参数,标识要生成文件的格式是xls还是pdf 5         String format = request.getParameter("format"); 6         // 报表文件路径 7         String reportPath = request.getSession().getServletContext() 8                 .getRealPath("/reports/deptReport.jasper"); 9         // 报表参数10         Map reportParameters = new HashMap();11         reportParameters.put("parDname", deptName);12         // 报表查数据库的连接13         Connection con = null;14         // 清空响应流15         response.reset();16         // 设置输出格式17         String contentType = "pdf";18         if ("xls".equals(format.toLowerCase())) {19             contentType = "xls";20         }21         response.setContentType("application/" + contentType);22         // 设置输出文件名23         response.setHeader("Content-Disposition",24                 "attachment; filename=deptReport." + contentType);25         // 输出流,用于向浏览器传送pdf文件26         ServletOutputStream out = null;27         // 创建数据连接28         Class.forName("oracle.jdbc.OracleDriver");29         con = DriverManager.getConnection(30                 "jdbc:oracle:thin:@oracle10:1521:oracle", "scott", "tiger");31         // 取响应流32         out = response.getOutputStream();33         // 创建导出器,JasperReport提供的类34         // 这里以xls和pdf为例,如果需要生成其他格式的文件,用其他导出器就行35         JRAbstractExporter exporter = new JRRtfExporter();36         // PDF导出器37         if ("pdf".equals(format.toLowerCase())) {38             exporter = new JRPdfExporter();39         } else if ("xls".equals(format.toLowerCase())) { // excel导出器40             exporter = new JRXlsExporter();41             exporter.setParameter(42                     JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, false);43         }44         // 加载报表文件45         JasperReport report = (JasperReport) JRLoader.loadObject(reportPath);46         // 创建JasperPrint对象47         JasperPrint jasperPrint = JasperFillManager.fillReport(report,48                 reportParameters, con);49         // 设置要输出的jasper对象50         exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);51         // 设置输出流52         exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);53         // 导出54         exporter.exportReport();55         out.flush();56         out.close();57     con.close();

到此为止,JasperReport + ireport 集成报表到Web程序的一般步骤就说完了,本说明中所提到的报表源文件及Web示例,随文档一起,可以参实际例子来学习Jasper 和 ireport

转载地址:http://tqhnl.baihongyu.com/

你可能感兴趣的文章
时光轴二之RecyclerView版时光轴效果
查看>>
关于ssh登录出现异常警告:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
查看>>
log4j日志输出性能优化-缓存、异步
查看>>
sql newid()随机函数
查看>>
scrapy递归抓取网页数据
查看>>
Git常用命令
查看>>
以pfile或者spfile启动时show parameter pfile的不同结果
查看>>
docker~写个容器启动的bash脚本
查看>>
html5--6-4 CSS选择器
查看>>
Eclipse坚线的插件
查看>>
MySql安装与使用图文教程
查看>>
mysql--DML--视图,索引,事务,字符集,函数
查看>>
iptables配置
查看>>
原生javascript实现异步的7种方式
查看>>
JS编程题
查看>>
SQL优化经验总结
查看>>
『算法学习』Mask-R-CNN
查看>>
wepy - Cannot read property 'Promise' of undefined
查看>>
oracle 拼接字符串的两种方式
查看>>
Base PyQt4, Simple Web APP Framwork
查看>>