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
时间: 2024-10-24 22:39:12