码迷,mamicode.com
首页 > 其他好文 > 详细

Excel导出工具包pentaho report

时间:2017-08-25 16:50:12      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:type   view   数据类型   htm   程序   1.0   repo   优点   params   

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

标签:type   view   数据类型   htm   程序   1.0   repo   优点   params   

原文地址:http://www.cnblogs.com/liushuncheng/p/7428532.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!