zoukankan      html  css  js  c++  java
  • Jasperreport5.6.9-----1

    Jasperreport5.6.0生成PDF

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

    1. jasperreport

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

    2. ierport

      iReport 是生成JasperReport所使用的报表格式文件.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;
    }
    }
    }

  • 相关阅读:
    Linux Systemcall By INT 0x80、Llinux Kernel Debug Based On Sourcecode
    ELF(Executable and Linkable Format)
    Linux文件权限;ACL;Setuid、Setgid、Stick bit特殊权限;sudo提权
    Linux System Calls Hooking Method Summary
    GCC、Makefile编程学习
    Linux Process/Thread Creation、Linux Process Principle、sys_fork、sys_execve、glibc fork/execve api sourcecode
    Linux中断技术、门描述符、IDT(中断描述符表)、异常控制技术总结归类
    浅议SNMP安全、SNMP协议、网络管理学习
    DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录
    RIP、OSPF、BGP、动态路由选路协议、自治域AS
  • 原文地址:https://www.cnblogs.com/UUUz/p/9365093.html
Copyright © 2011-2022 走看看