Excel导出工具包pentaho report

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel导出工具包pentaho report相关的知识,希望对你有一定的参考价值。

1.Pentaho Report介绍

> Pentaho
    Pentaho 是 Java 平台上著名的商业智能(BI)项目。它包含多个产品以及产品插件、辅助工具,包括 BI 平台(BI Platform)、ETL、报表、联机分析、数据挖掘等。

> Pentaho report
    Pentaho Reporting 是 Pentaho 的报表解决方案。它原先是开源项目 JFreeReport,后来容纳进 Pentaho。Pentaho Reporting 采用开源协议是 LGPL。
    Pentaho 报表有两种使用方式,一种是基于 BI Server(不需要写代码),一种是嵌入应用方式(传统 JFreeReport 的方式)。报表主要通过报表设计器(Pentaho Report Designer, PRD)来定义。定义好的报表保存为后缀为 prpt 的文件。 
    支持导出数据类型:PDF、EXCEL(03\07)、RTF、html、TXT、CSV。

2.Pentaho Report Designer(PRD)介绍

报表设计器( Pentaho Report Designer, PRD ) 是一个Java桌面程序。
从http://reporting.pentaho.com/下载,下载后解压即可使用 (已设置JAVA环境)。
通过report-designer.bat启动PRD。

技术分享

报表结构:
    Page Header:页头这里设置的内容将在每一页显示(报表出现分页)
    Report Header:报表头只在报表的开头显示(如果出现颁不会显示在中首页后的其它页)
    Details Header:配置Details的列名
    Details:这里配置多行数据的列(会根据数据的行数据显示)
    Report Footer:类似Report Header 只在报表的结尾显示
    Page Footer:类似Page Header在每页的结尾显示

    数据源:
    JDBC
    METADATA (元数据)
    Pentaho Data Integration(kettle) 
    OLAP
    XML
    TABLE
    Advanced (SCRIPTABLE、 JAVA METHOD INVOCATION 、 COMMUNITY DATA ACCESS)

图表

技术分享

3.Pentaho Report 工具包介绍

入口方法:
    com.bbd.report.ReportEngine
        |
        |_ generateReport  -----生成excel报表
        |
        |_ generateReport  -----生成非excel报表


生成非excel报表参数:
    Optional<String> resource:报表文件路径
   ArrayListMultimap<StructureEnum,ReportElementModel> elements:报表结构和所包含元素对象
    Map<String,Object> params:报表传入参数
    ExportStrategy exportStrategy:导入模版类型
    OutputStream outputStream:输出流

关键类关系

技术分享

3.Demo

实现主要步骤:定义报表模版 -》 添加依赖 -》 代码构建报告元素 -》 生成报告

一、在PRD中设计报告样式;
    请参考:《Pentaho报表使用指南.pdf》![下载](/download/Pentaho报表使用指南.pdf)

二、maven依赖:
    <dependency>
        <groupId>com.bbd.report</groupId>
        <artifactId>report</artifactId>
        <version>1.0.1</version>
    </dependency>

三、生成报告:
    Optional<String> resource = Optional.of("subReport.prpt");

    TableDataModel tableDataModel = new TableDataModel(new Object[][]{{1,1},{9,9}},new Object[]{"ID","Value"});

    ReportElementModel reportElementModel = new ReportElementModel();
    reportElementModel.setName("sub");
    reportElementModel.setDataName("table1");
    reportElementModel.setElementEnum(ElementEnum.REPORT_DEFINITION_TABLE);
    reportElementModel.setDataModel(tableDataModel);

    ArrayListMultimap<StructureEnum,ReportElementModel> elements = ArrayListMultimap.create();
    elements.put(StructureEnum.REPORT_HEADER, reportElementModel);

    File f = new File(path);
    OutputStream out= null;
    try {
        out = new FileOutputStream(f);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    ReportEngine re = new ReportEngine();
    re.generateReport(resource,elements,null,ExportEnum.PDF,out);

实现效果图 技术分享

3.优缺点

缺点:
    学习成本较高(报表样式)
    某些图标无法实现    
    有待继续扩展

优点:
    开发效率较高
    可实现复杂报表
    支持EXCEL、RTF、PDF等主流格式
    支持各种数据源

参考资料:

http://blog.csdn.net/zhaizhisheng/article/details/45190663
http://blog.csdn.net/zhaizhisheng/article/details/45396553
https://wenku.baidu.com/view/5fbcea57b52acfc789ebc9d6.html
http://www.docin.com/p-1327977879.html

以上是关于Excel导出工具包pentaho report的主要内容,如果未能解决你的问题,请参考以下文章

导出到 Pentaho 报告结果到 csv 或 excel

Pentaho Report Designer“text to columns”

如何设置导出excel的格式

SQL Reporting Services - 导出到 Excel - 为啥选择“自定义”格式?

Reporting Services 2008 将重复行导出到 Excel

Reporting Services 使用多个工作表导出到 Excel