- 浏览: 213535 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
kris_zhang:
Derby 使用的怎么样?
沉浮于各种文件型数据库 hsqldb h2 还是derby -
di1984HIT:
学习了~~。。
【阅读笔记】jvm性能工具-jstat解决100%CPU占用率分析 -
qiuyi:
兄弟,GOOD!
ubuntu 14.04 sunpinyin的双拼下ue和iong的韵母问题 -
RYANaaa:
博主你好,请问你是怎么在sun的java源码里设置端点的啊?我 ...
理解JComboBox原理——鼠标点击ComboBox之外的区域,下拉列表如何自动隐藏 -
tag13346:
H2必建索引,否则就是个悲剧
沉浮于各种文件型数据库 hsqldb h2 还是derby
Eclipse Birt 2.2 的发布,着实让我吓了一大跳,因为它的 Notable Features 一文中的亮点实在是多得惊人,比如交叉表、图表等等。
这次自己做的一个小软件里面需要用到Birt,反正是自己做来自己用的,也不用管IDE工具是否稳定,只要好用便行,就选了 Birt 2.2.0 这个版本,Eclipse 3.3.0(当时为了避免麻烦,直接下载的是 Eclipse-birt-all-in-one-2.2.0 这个全功能版)
现在我来说明一下,自己如何利用rptdesign格式的文件创建描述图表的xml格式的chart文件。
1.使用rptdesign文件创建chart文件
创建一个包含有图表的报表文件(由于创建报表的方法,网上、Eclipse官方都有大量的文献进行讲解,这里就不再赘述),结果如下图所示:
本来是打算使用Report Viewer,但是查看了网上的文章,虽然绝大多数都是讲解如何使用 Report Viewer 来显示以“rptdesign”为后缀的报表文件,但是也有大量文章指出 Report Viewer 难于扩展的问题,于是乎,在Eclipse创建图表项目的时候,关注了一下项目中自动生成的使用 Chart 标签在网页中显示图表的示例
这三个自动生成的与图表在网页中显示的文件是:index.jsp,SampleBar.chart,SamplePie.chart。
由于,之前创建的报表文件也是使用圆饼图,所以比对该报表文件与SamplePie.chart中的内容,不难发现,其中有一部分内容的xml定义是一致的。它们起始的一段代码均为:
<?xml version="1.0" encoding="UTF-8"?> <model:ChartWithoutAxes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:attribute="http://www.birt.eclipse.org/ChartModelAttribute" xmlns:layout="http://www.birt.eclipse.org/ChartModelLayout" xmlns:model="http://www.birt.eclipse.org/ChartModel" xmlns:type="http://www.birt.eclipse.org/ChartModelType"> <Type>Pie Chart</Type> <SubType>Standard Pie Chart</SubType> ……
结束均为
</SeriesDefinitions> <MinSlicePercent>false</MinSlicePercent> </model:ChartWithoutAxes>
rtpdesign格式的文件中的这段内容嵌套在标签<![CDATA[……]>之间,将这段内容单独拷贝出来,取名为 xx.chart
2.定义数据源
下载包“birt-source-2_2_0.zip ”,这里有一个类名为 SampleHelper.java 的源代码,参考它的方法 createSampleEvaluator() 中的代码,大致可以了解到如何创建自己的数据源。
由于准备使用iBatis、hibernate等ORM框架,所以通常数据的返回值为List,而List中的每个对象元素是表示一行数据的Map对象,于是在SampleHelper中增加自己的方法,来处理这种情况,其代码如下:
public static final IDataRowExpressionEvaluator createEntSumDataSet( Collection dataColl, String categoryName, String valueName) { if (dataColl == null || StringUtils.isEmpty(categoryName) || StringUtils.isEmpty(valueName)) { throw new RuntimeException("数据集合、分类名称、数据名称三个参数不能为空!"); } if (dataColl.size() <= 0) { throw new RuntimeException("数据集合所包含的数据行不能小于或等于0!"); } String[] columnSet = new String[] { "row[\"" + categoryName + "\"]", "row[\"" + valueName + "\"]" }; Object[][] dataSet = new Object[2][dataColl.size()]; int rowIndex = 0; for (Iterator iterator = dataColl.iterator(); iterator.hasNext(); rowIndex++) { Map rowMap = (Map) iterator.next(); dataSet[0][rowIndex] = rowMap.get(categoryName); dataSet[1][rowIndex] = new Integer ((String) rowMap.get(valueName)); } return new SampleDataRowEvaluator(set, data); }
参数中,dataColl就是我们之前提到的ORM返回的数据集合, categoryName 是我们指定的饼图的每个分块的名称,而 valueName 则表示我们指定的分块对应的数据内容(由于我的 rptdesign 文件中,数据内容为数值,所以这里需要将 valueName 这一列所对应的数据全部转换为数值类型)
从上面代码不难看出,categoryName 和 valueName 分别表示的是数据的两列的列名;dataSet的一维下标为列下标,二维下标为每一列的第几行
3.页面中显示图表
在index.jsp中添加如下代码:
<% // 定义数据源 ArrayList dataList = new ArrayList(); HashMap rowMap = new HashMap(); rowMap.put("entcls", "国有企业"); rowMap.put("count", "100"); dataList.add(rowMap); rowMap = new HashMap(); rowMap.put("entcls", "私营企业"); rowMap.put("count", "55"); dataList.add(rowMap); rowMap = new HashMap(); rowMap.put("entcls", "外资企业"); rowMap.put("count", "99"); dataList.add(rowMap); rowMap = new HashMap(); rowMap.put("entcls", "独资企业"); rowMap.put("count", "129"); dataList.add(rowMap); rowMap = new HashMap(); rowMap.put("entcls", "个体工商户"); rowMap.put("count", "392"); dataList.add(rowMap); rowMap = new HashMap(); rowMap.put("entcls", "合资企业"); rowMap.put("count", "112"); dataList.add(rowMap); rowMap = new HashMap(); rowMap.put("entcls", "三资企业"); rowMap.put("count", "231"); dataList.add(rowMap); rowMap = new HashMap(); rowMap.put("entcls", "股份企业"); rowMap.put("count", "890"); dataList.add(rowMap); rowMap = new HashMap(); rowMap.put("entcls", "垄断企业"); rowMap.put("count", "190"); dataList.add(rowMap); rowMap = new HashMap(); rowMap.put("entcls", "私人独资企业"); rowMap.put("count", "120"); dataList.add(rowMap); rowMap = new HashMap(); rowMap.put("entcls", "注册企业"); rowMap.put("count", "790"); dataList.add(rowMap); rowMap = new HashMap(); rowMap.put("entcls", "注册企业2"); rowMap.put("count", "790"); dataList.add(rowMap); %> Pie chart (PNG FROM RPTDESIGN): <br> RealPath:<%=session.getServletContext().getRealPath( "qyjbxxReport.chart")%><br> <!-- xx.chart 放在 Eclipse 网络项目的 WebContent 文件夹下面 --> <chart:renderChart width="600" height="500" output="jpg" model="<%=session.getServletContext().getRealPath("xx.chart") %>" data="<%=CreditEntSum.createCreditEntSumDataSet(dataList, "entcls ", "count ") %>"> </chart:renderChart> <br>
报表的xml文件xx.chart中需要做出相应的修改,以保证,能够顺利找到需要的列和数据
两处修改后的内容如下:
<DataDefinition> <Definition>row["count"] </Definition> </DataDefinition> <SeriesIdentifier>统计数量</SeriesIdentifier> <DataDefinition> <Definition>row["entcls"] </Definition> </DataDefinition> <SeriesIdentifier>行业分类</SeriesIdentifier>
上面的黑体字与页面中调用方法 createEntSumDataSet 的参数,和数据源代码中的方法 createEntSumDataSet 中的代码的 columnSet 定义的语句中的内容,一一对应起来,使得 xx.chart 能够从 SampleHelper 中获得所需要的列与数据信息
4.运行index.jsp页面
所得结果如下:
附注:
下载 birt-source-2_2_0.zip 这个源代码包的过程,是一个极其痛苦的过程,官方网站上面的下载链接突然失效,后来才知道是服务器无法连接,在网上搜索了很久未果,最终竟然想到镜像,于是用关键字“birt mirror ……”搜索到一个网站“http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/birt/”,这里有着最新的Birt以及Eclipse相关的资料。
之所以要下载到这个源代码包,就是为了 研究一下SampleHelper到底使用了什么方法来提供数据源给那些图表的。
发表评论
-
读了一篇访谈《Philippe Kruchten谈论架构和技术债务》
2011-11-28 17:33 955看了InfoQ中的一篇访谈《Philippe Kruchten ... -
开发单元测试脚手架 - 第一篇 - 需求分析
2011-07-28 23:02 1883文档计划(暂定) 文档名称 计划完成时间 完成 ... -
最近在忙什么呢?
2011-07-21 22:57 1077这段时间分享激情被工作淡了 2011年上半年盘点 ... -
【阅读笔记】jvm性能工具-jstat解决100%CPU占用率分析
2011-05-08 13:17 6402阅读文章:http://www.theserverside.c ... -
(读书)实现模式 第三章 一种编程理论
2010-12-02 13:15 993全书内容导游图 ... -
(读书)实现模式 前言
2010-12-02 12:56 1014突然发现自己什么都不懂了,有时候又觉得自己无所不知道一 ... -
华表Cell文件导入导出
2010-03-21 11:39 6466在福州出差ing…… ... -
commons net 下的FTPClient使用时的一些小问题
2010-03-20 01:28 4813原始发表时间:2009-08-20 FTPCl ... -
JNA映射自己编写的DLL
2010-03-20 01:19 3614原始发表时间:2009-07-03 学习过程 - 思维 ... -
JNA实现窗口最小化
2010-03-20 01:13 6399原始发表时间:2009-06-27 本文学习过程如下图 ... -
解决tomcat窗口启动时因为某些错误而一闪而过
2010-03-19 23:49 2565原始发表时间:2009-04-20 参考文章http: ... -
使用JMeter做压力测试-对数据库
2010-03-19 23:00 9895最早发表时间:2009-04-06 ... -
使用Java正则表达式硬编码实现有限层的嵌套匹配
2010-03-19 22:28 4105原始发表时间:2009-04-05 今天遇到 ... -
用Java没有好的方法生成大数据量的Excel
2010-03-19 21:47 2955最早发表时间:2009-01-13 ... -
使用Spring动态修改DataSource
2010-03-19 21:45 11320最早发表时间:2008-12-03 我们现在在 ... -
JUnit 使用小问题,浪费了一个钟头……
2010-03-19 21:38 1049在Eclipse3.4当中写一个测试用例的时候,继承了 ...
相关推荐
"Eclipse BIRT Chart Engine Example Resource Code" 提供的是一个示例资源代码库,帮助开发者更好地理解和使用BIRT图表引擎。 **BIRT图表引擎核心概念:** 1. **图表引擎**:这是BIRT的核心组件之一,负责生成...
BIRT(Business Intelligence and Reporting Tools)是一个开源的报表系统,由Eclipse基金会维护。它提供了丰富的API,使得开发者能够在其应用程序中嵌入复杂的报表和数据分析功能。本篇将围绕"Birt API"和"Birt ...
- **Calling the Simple Chart API from Script (BIRT)**:通过脚本调用简单的图表API,自定义图表的样式和行为。 - **Change Database URL at runtime based on Parameter (BIRT)**:根据运行时参数动态更改数据库...
这篇文档主要介绍如何在Birt中设计和创建Chart图表。以下是对Birt Chart图设计步骤的详细说明: 1. **环境配置**:虽然在文档中没有详细展开,但Birt的环境通常包括Eclipse集成开发环境,安装了Birt插件。开发者...
然而,据描述中提到,官方版本的chart图表在运行时存在一个错误,导致无法正常显示chart图。这个问题可能涉及到多个方面,如数据源配置、图表类型选择、渲染设置或内部代码的bug。幸运的是,这个特定的bug已经被修复...
1. **BIRT Chart Engine**: 这是BIRT图表的核心组件,负责处理数据转换、图表渲染和交互逻辑。它提供了丰富的图表类型,如柱状图、折线图、饼图、散点图等,支持自定义样式和布局,以满足各种数据可视化需求。 2. *...
《birt_chart_api.CHM》则专门针对BIRT的图表功能,BIRT的图表模块强大且灵活,支持多种图表类型,如柱状图、折线图、饼图等。这个CHM文件可能详细解释了如何使用API创建、配置和定制图表,包括设置图表属性、数据...
**BIRT(Business Intelligence and Reporting Tools)是IBM推出的一款开源报表系统,主要...通过深入理解和实践“Birt使用经验谈chart2006.04.11.doc”文档中的内容,用户可以更高效地利用BIRT解决实际的报表需求。
在“Data Explorer”中创建新的数据集,定义查询条件,然后在报表设计区拖拽“Chart”元素,选择你创建的数据集,并配置图表样式和选项。 #### 2.3.1 新建数据集 在“Data Explorer”中,右键单击“Data Sets”并...
在BIRT中,创建图表涉及选择合适的图表类型,定义数据系列,设置轴、标签和颜色。可以使用数据绑定将图表与报表的其他部分联动,实现动态交互。 ### 五.报表的参数使用 参数是BIRT报表中的一个重要特性,允许用户...
6. **Chart API**:BIRT的图表组件提供了一套完整的API,用于创建各种类型的图表,并进行样式和行为的定制。 7. **Web Viewer API**:用于在Web应用程序中嵌入BIRT报表查看器。开发者可以利用此API控制报表的显示和...
在【Birt使用经验谈chart2006.04.11.doc】中,可能包含了用户对BIRT图表功能的深入理解和实用技巧。 1. **BIRT报表设计**:BIRT的报表设计工具提供了拖放式的界面,使得非程序员也能轻松设计报表布局。通过组合表格...
4. Chart图表:包括饼图、线性图等多种图表,使数据可视化,便于快速理解。 报表开发涉及报表参数的使用,如ComboBox、RadioButton、List等,以及级联参数的应用。此外,文档还涵盖样式模板和自定义JavaScript的...
- **Chart Overview**:BIRT提供强大的图表生成能力,支持各种图表类型。 - **独立图表演示**:除了嵌入到报告中的图表,BIRT还可以创建独立的图表应用程序。 6. **部署与集成**: - **Web Viewer**:在Web环境...
比如,Birt使用说明.doc可能是基础操作的引导,而Birt使用经验谈chart图.doc则可能专门针对图表的创建和定制进行了深入讲解。 最后,两份PDF文档:Addison.Wesley.Integrating.and.Extending.BIRT.Nov.2006.pdf和...
4. **Chart 图表**:利用图表技术直观展示数据变化趋势,提升数据可视性。 #### 四、报表开发实践 1. **清单表开发**:主要涉及 SQL 查询的设计与优化,以及报表布局的设置。 2. **固定格子表开发**:需要考虑表头...
7. **com.ibm.examples.chart.zip**:IBM作为BIRT的重要贡献者,这个压缩文件可能是IBM提供的图表示例代码或教程,帮助开发者更好地理解和使用BIRT的图表功能,尤其是高级特性和自定义图表的实现。 通过深入学习...
- **创立表**:在设计视图中,从工具栏选择"Chart"拖放到设计区,然后配置图表类型、数据系列、轴、标签等属性。数据集与图表关联,图表的数据将基于所选数据集。 ### 3. 报表的发布 #### 3.1 使用Tomcat发布报表 ...