JasperReport

Jasper

作用

生成或打印 PDF,HTML,XLS,RTF,ODT,CSV,TXT,XML

优点

灵活布局

实现

  1. 下载 TIBCO Jaspersoft Studio 可百度去官网下载,免费的。
  2. 创建 *.jrxml 文件,建立打印模板
  3. 将 *.jrxml 编译成 *.jasper (这一步也可以在 java 代码中实现)
  4. 项目中引入 jar 包
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.17.0</version>
    </dependency>

    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports-fonts</artifactId>
        <version>6.12.2</version>
    </dependency>
  1. java 核心代码
    // 方式1:
    Map<String, Object> params = new HashMap<>();
    List<Object> list = new ArrayList<>();
    JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list);

    String path = "/xxx.jasper";
    InputStream source = this.getClass().getClassLoader().getResourceAsStream(path);
    JasperPrint jasperPrint = JasperFillManager.fillReport(source, params, dataSource);
    byte[] res = JasperExportManager.exportReportToPdf(jasperPrint);

    // 方式2:
    Map<String, Object> params = new HashMap<>();
    List<Object> list = new ArrayList<>();
    JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list);

    String path = "/xxx.jrxml";
    InputStream source = this.getClass().getClassLoader().getResourceAsStream(path);
    JasperReport jasperReport = JasperCompileManager.compileReport(source);
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);
    byte[] res = JasperExportManager.exportReportToPdf(jasperPrint);
    

    /** 
        流程:
        加载 将 *.jrxml 或 *.jasper 加载到 java
                *.jrxml --> JasperDesign --> JasperReport  加载的是 jrxml 时,可在 java 中再次对 JasperDesign 进行编辑
                *.jasper --> JasperReport
        编译  加载的是 jrxml 时才需要编译 JasperCompileManager.compileReport() 该方法有多个重载方法
        填充  JasperFillManager.fillReport(jasperReport, null, dataSource)
        导出  JasperExportManager.exportReportToPdf(jasperPrint)
        打印  JasperPrintManager.printPageToImage()
        
        jrxml --> 
        JRXmlLoader --> JasperDesign --> JRCompiler --> JasperReport --> 
        JapserFillManager --> JasperPrint --> 
        JasperPrintManager --> byte[] 
    */
  1. TIBCO Jaspersoft Studio 简单说明

    • Styles 可添加样式

    • Parameters 参数 定义获取 java代码中 params Map中的内容,name 要和 map key 一致

    • Fields 字段 可获取 java代码中 list 中 的 Object 中的属性

    • Title 全局加载一次

    • Page Header 每页 pdf 加载一次

    • Column Header

    • Detail 加载 list.size() 次,list 有多少记录加载多少次

    • Column Footer

    • Page Footer 每页 pdf 加载一次

    • 表达式 F x x x 能 表 示 F i e l d s , F{xxx} 能表示 Fields, FxxxFieldsP{xxx} 能表示 Parameters.

    • Print When Expression 控制是否显示,可用表达式

    • Expression 内容,可用表达式

    • Markup e.g:html 会把 Expression 中的内容看作 html

    • Position Type 中的 float 是支持纵向的,不支持横向

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值