博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jasperreport5.6.9-----1
阅读量:5332 次
发布时间:2019-06-15

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

Jasperreport5.6.0生成PDF

 

最近项目中需要生成报表,先是看了下itext,觉得还可以,但是如果数据字段多的话,不太灵活。所以后来看了下ireport,觉得还可以,下面简单说一下它们:

  1. jasperreport

    JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。它是开源的,但文档收费。

  2. ierport

    iReport 是生成所使用的报表格式文件.jasper,因为JasperReport本身并未提供很好的可视化报表设计工具,iReport的出现正好弥补了这个缺陷。

两者配合使用:irpeort负责生成编译后的.jasper格式文件,生成.jasper格式后再用 jasperreport在程序中生成需要的报表格式,这里主要说说jasperreport中如何生成pdf.

注意: jasperReport与ireport版本要一致。我这里的版本是最新的版本5.6.0。

 

如下例所示:

//ireport生成项目立项PDF格式

   public String getIreportPDFAction()

   {

      Connection conn =null;//连接

      try {

          String projectapproid =request.getParameter("projectapproid");

          //报表生成之后编译生成的.jasper文件位置

          //1.绝对路径

         File jasperFile=new File("D:/jasper/report1.jasper");

         //得到数据URL

         String url ="jdbc:oracle:thin:@192.168.1.104:1521:orcl";

         Class.forName("oracle.jdbc.driver.OracleDriver");

         conn = DriverManager.getConnection(url,"zwjx","zwjx");

         //设置参数

         Map parmerters = new HashMap();

         parmerters.put("projectapproid", projectapproid);

         //生成pdf

         byte[] bytes = JasperRunManager.runReportToPdf(jasperFile.getPath(),parmerters,conn);

         response.setContentType("application/pdf");

         response.setContentLength(bytes.length);

         //指定位置保存pdf位置

         FileOutputStream outs =new FileOutputStream("D:/jasper/report1.pdf");

         outs.write(bytes,0,bytes.length);

         outs.flush();

         outs.close();

      }catch (Exceptione) {

          e.printStackTrace();

          System.out.println("ireport生成报表出错!");

      }finally

      {

          try {

             conn.close();

          }catch(SQLException e) {

             //TODO Auto-generated catch block

             e.printStackTrace();

          }

      }

          returnnull;

   }

 运行后我们去D盘下的jasper文件夹中可以看到生成的 pdf.打开效果如下:

 

//上面的读取位置和保存位置都是根据自己所放位置设定的。

 

 

 

通过report转换工具类生成一个文件流,然后可以将文件流用于传输,也可以直接使用该文件流用于生成PDF格式文件。

/**

* report转换工具类
*
*/
public class IspReportUtil {

public static String exportReportToByte(CommonReportHandler handler)

throws AppException {
JRDataSource dataSource = null;
if (handler.getDataList() != null && handler.getDataList().size()>0) {
dataSource = new JRBeanCollectionDataSource(handler.getDataList());// 获取数据集
} else {
dataSource = new JREmptyDataSource();
}
try {
InputStream inputStream = new FileInputStream(handler.getReportFile());
byte[] data = JasperRunManager.runReportToPdf(inputStream, handler.getParamMap(), dataSource);
return new BASE64Encoder().encode(data);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}

转载于:https://www.cnblogs.com/UUUz/p/9365093.html

你可能感兴趣的文章
jsp中对jstl一些标签的引用方式
查看>>
安卓第十三天笔记-服务(Service)
查看>>
Servlet接收JSP参数乱码问题解决办法
查看>>
【bzoj5016】[Snoi2017]一个简单的询问 莫队算法
查看>>
Ajax : load()
查看>>
MySQL-EXPLAIN执行计划Extra解释
查看>>
Zookeeper概述
查看>>
Zookeeper一致性级别
查看>>
单例模式的几种实现方式及对比
查看>>
HDU 1712 ACboy needs your help (分组背包模版题)
查看>>
共享内存
查看>>
从零开始学JavaWeb
查看>>
Tomcat源码浅析
查看>>
计算三球交点坐标的快速算法
查看>>
my_ls-ailh
查看>>
Extjs介绍(二)
查看>>
微信小程序开发7-JavaScript脚本
查看>>
leetcode-78-子集
查看>>
LINUX进程小结
查看>>
公告会看门道:四个不同的厨师和史蒂夫·乔布斯
查看>>