【精编推荐】birt动态分组报表制作

合集下载

Eclipse Birt报表指南

Eclipse Birt报表指南

-简介BIRT是一个Eclipse-based开放源代码报表系统。

它主要是用在基于Java与J2EE的Web 应用程序上。

BIRT主要由两部分组成:一个是基于Eclipse的报表设计和一个可以加到你应用服务的运行期组件。

BIRT同时也提供一个图形报表制作引擎。

URL: /birt/前言这个指南将引导你设计一个简单的报表,令你对BIRT报表系统有个感性的认识,如果想进一步了解BIRT的使用可以参考 BIRT在Eclipse中自带的帮助,Select Help→Help Contents from the Eclipse menu and then click on the BIRT Developer Guide.如图个人体验操作界面友好大方,小图标都很漂亮:);功能并不逊色与商业报表工具;∙CSS提供了强大灵活的样式定义,对于属性CSS的设计人员来说,应该可以设计出相当出色的报表样式;∙集成在Eclipse中,不用再开启别报表开发工具窗口;∙BIRE的本地化做的很好,安装以后操作界面就是中文的;∙开源的报表产品,降低开发成本,一些报表开发工具除了价格昂贵以外,还有用户限制;BIRT 安装指南安装方式一下载一个BIRT All-in-one版本的 Eclipse,包含了运行BIRT系统所需的组件,最方便了(如果是将报表工具培训一下让非开发人员参与定制话可以这样做:))URL:birt-report-designer-all-in-one-2_1_1.zip安装方式二假设你已经知道如何安装Eclispe插件(建议采用Link的方式安装插件,不至于全部一股脑的将各种插件都解压到Eclipse的目录中去)运行BIRT报表系统需要以下软件或插件∙Java 1.4.2/1.5 JDK/JRE∙Eclipse-SDK-3.1.2-win32及以上版本∙Graphics Editor Framework (GEF) runtime∙Eclipse Modeling Framework (EMF) runtime∙BIRT∙iText 1.3 - 复制 itext-1.3.jar 文件到plugins/org.eclipse.birt.report.engine.emitter.pdf_version/lib 目录.∙prototype.js v1.4.0 - 复制prototype.js 文件到plugins/org.eclipse.birt.report.viewer_version/birt/ajax/lib 目录其他∙BIRT提供的一个Flash格式的安装演示,也可以照着这个演示来安装:)∙BIRT 网站提供的安装指南∙运行报表(tomcat/weblogic/jboss)使用入门1.环境●报表设计器:可以到/birt/downloads/下载最新版本,当前的最新版是birt-rcp-report-designer-2_1_1。

birt报表动态切换数据源解决方案

birt报表动态切换数据源解决方案

Birt报表动态切换数据源处理方案陈鸿编写(一)通过 library实现连接数据库管理1.理解library(库):可视化旳报表开发环境。

可以理解为,在使用创立报表旳时候有诸多旳报表资源都会反复旳使用,这样为了以便管理,可以将这些部分放在library文献里,这样其他报表只要是引用这些library文献即可。

同步也以便了管理,例如当修改数据源旳时候,只要修改包括数据源旳library文献就可以了,而不必去一种个修改其他旳报表文献。

这些库可包括任何报表元素,例如样式、数据源、报表条目、脚本等等。

2.创立library:增长到应用中用于运行报表,并可以把报表以多种形式导出,如Excel、HTML分页格式、PDF、RTF等。

A.选新建LibraryB.可以看到新类似于创立报表文献旳界面C.选择所需旳驱动,并添加合法旳数据源信息。

D.创立数据源完毕后,也可以继续创立数据集。

3.使用libraryA.下面进行报表文献旳制作,制作过程中会用到这个library文献。

新建一种报表文献。

在视图里选择Library Explorer,右击,添加刚刚新建好旳Library文献。

添加完毕后记得点上面旳刷新。

B.进行引用,首先保证Data Explorer和Library Explorer同步在界面里显示,之后便是将Library 里旳我们要用旳数据拖拽到Data Explorer 自己旳报表Datasources中。

便完毕了引用数据源。

假如Library中尚有其他我们要引用旳部分也是同样去操作。

4.在java中修改birt报表library旳数据源// 修改.rptlibrary内旳数据源信息public void setDataSource(String rptdesignPath) {DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null;InputStream is = null;String datasource = null;Document doc = null;String EncodePsd = null;try {db = dbf.newDocumentBuilder();try {is = new FileInputStream(rptdesignPath);try {doc = db.parse(is);is.close();} catch (SAXException e) {toPrint("SAXException");return;} catch (IOException e) {toPrint("Can't read file [" + rptdesignPath + "]");return;}} catch (FileNotFoundException e) {toPrint("Can't found file [" + rptdesignPath + "]"); return;}} catch (ParserConfigurationException e) {// TODO Auto-generated catch blocktoPrint("ParserConfigurationException");return;}// 查找data-sources信息NodeList nodeList = doc.getElementsByTagName("data-sources");for (int i = 0; i < nodeList.getLength(); i++) {Element e = (Element) nodeList.item(i);NodeList properties = e.getChildNodes();if (properties != null) {// 得到oda-data-source部分信息Node property = properties.item(1);for (Node node = property.getFirstChild(); node != null; node = node .getNextSibling()) {// 得到driver、url、username、password四项旳值,并重新设置if (node.getNodeName().equals("property")|| node.getNodeName().equals("encrypted-property")) { String name = node.getAttributes().getNamedItem("name") .getNodeValue();if (name.equals("odaDriverClass")) {node.getFirstChild().setNodeValue(driver);} else if (name.equals("odaURL")) {node.getFirstChild().setNodeValue(url);} else if (name.equals("odaUser")) {node.getFirstChild().setNodeValue(username);} else if (name.equals("odaPassword")) {// 对密码进行base64编码EncodePsd = (new sun.misc.BASE64Encoder()).encode(password.getBytes());// System.out.println("********EncodePsd:// "+EncodePsd);node.getFirstChild().setNodeValue(EncodePsd);}}}}}// 写入指定旳文献中writeToXml(doc, rptdesignPath);}// write to xmlpublic void writeToXml(Document doc, String rptdesign) { try {OutputStream fileoutputStream = new FileOutputStream(rptdesign);TransformerFactory tFactory = TransformerFactory.newInstance();Transformer transformer = tFactory.newTransformer();DOMSource source = new DOMSource(doc);StreamResult result = new StreamResult(fileoutputStream);transformer.transform(source, result);fileoutputStream.close();} catch (Exception e) {toPrint("Can't write to file: " + rptdesign);return;}}(二)计划开发方案与环节第一步:建立library,实现连接数据库管理。

BIRT工具报表生成

BIRT工具报表生成

BIRT报表生成步骤1.新建Report ProjectFile---->new--->Business Intelligence and Reporting Tools--->Report Project点击next按钮,输入Project name,点击Finish按钮。

这样就成功完成Report Project 的创建!本文档以myReport项目为实例。

2.新建Report Project中***.rptdesign的报表。

File---->new--->Report 选中您的报表所要放置的项目,输入File name点击Finish按钮即可!这里把新建的myReport.rptdesign放入myReport项目中。

如下图1.1图1.13.数据库连接3.1双击你要设计的***.rptdesign,这里(以下)我们以myReport.rptdesign为实例,看下图1.2图1.23.2 选中工具左侧Data Expolr下的Data Sources 右击---.>New Data Source具体步骤如下图1.3(选中JDBC Data Source ,Data Source Name自己可以定义,这里我用默认的Data Source。

点击next)图1.3填入相应的数据配置信息如下图1.4图1.4值得注意的是若是第一次使用需要添加ojdbc14.jar包,点击如图1.4中的Manage Drivers 添加jar包。

如下图1.5图1.53.3 选中工具左侧Data Expolr下的Data Sets右击---.>New Data Set如下图1.6,选择您的Data Set需要绑定的Data Source(这里我选择上步创建的Data Source),选择Data Set Type(这里我选择的是:SQL Select Query),Data Set Name 可以自己定义,这里我用默认的Data Set。

birt报表参数

birt报表参数

birt报表参数BIRT报表参数是一种用于生成动态报表的工具,它可以根据用户的需求来动态地改变报表的内容和显示方式。

在本文中,我将介绍BIRT报表参数的一些基本概念和使用方法。

让我们来了解一下什么是BIRT报表参数。

BIRT报表参数是一种用于传递数据给报表的方式,它可以让用户在生成报表时输入一些参数值,从而影响报表的生成结果。

比如,我们可以通过报表参数来过滤数据、排序数据、设置报表的标题等等。

在BIRT中,报表参数的定义是在数据源上的,我们可以在数据源中定义一些参数,并在报表设计中使用这些参数。

当用户生成报表时,系统会提示用户输入参数值,并根据参数值来生成报表。

在使用BIRT报表参数时,首先需要在报表设计中定义参数。

定义参数的方式是在报表设计的参数视图中添加一个新的参数,并设置参数的名称、数据类型、默认值等属性。

参数的数据类型可以是字符串、整数、日期等,根据实际需求来设置。

定义好参数后,我们可以在报表设计的其他地方使用这个参数。

比如,我们可以将参数值作为过滤条件来过滤数据,或者将参数值作为标题的一部分来显示在报表上。

在使用BIRT报表参数时,我们可以通过多种方式来传递参数值。

一种常见的方式是通过URL传递参数值。

在URL中,我们可以使用参数名和参数值的键值对来传递参数值。

比如,我们可以使用以下URL来传递参数值:```http://localhost:8080/birtviewer/frameset?__report=report.rpt design&param1=value1&param2=value2```在上面的URL中,param1和param2是参数的名称,value1和value2是参数的值。

通过这种方式,我们可以在生成报表时动态地传递参数值。

除了通过URL传递参数值,我们还可以通过其他方式来传递参数值。

比如,我们可以在程序中使用API来设置参数值,或者在报表生成界面上手动输入参数值。

解决Birt等报表工具制作报表的几个难题

解决Birt等报表工具制作报表的几个难题

解决Birt等报表工具制作报表的几个难题在本文中我们再继续讨论几个类似的制作难题,并把说明集中在如何编写集算器 SPL 脚本上,不再赘述如何在 Birt 中引入 SPL 的步骤了。

1. 组内跨行计算组内跨行计算是指在计算一行中某个计算列的值时,需要引用到组内其它行的数据来进行计算。

比如下面这个例子:库表 sample 有三个字段,其中 id 是分组字段。

需要设计一张分组表,使用id 分组,明细字段是v1,v2 以及计算列crossline, 其中crossline 的算法是本条记录 v1、v2 之和加上本组上一条记录的 v1、v2 之和。

示例源数据如下:最后要展现的报表结果如下图所示:编写集算器 SPL 代码如下:A1 连接数据库A2 查询数据库,同时多产生一列常数备用。

A3 按id 分组,并在每组数据中修改计算列crossline,最后合并,其中v1[-1]、v2[-1] 是集算器特有的定位上一行记录中字段的写法。

A4 关闭数据库A5 将 A2 中的计算结果数据集返回给报表工具2. 跨库数据源制作报表的数据往往来自于多种数据源,比如不同的物理数据库、文本文件、Excel 文件等,这些数据在报表中往往还需要相互关联进行运算。

报表工具本身能实现从多数据源取数,但进行关联运算会有一定的困难,或者运算性能非常差。

而由开发者自己编程去做关联运算,工作量一般又会非常大。

而集算器 SPL 恰恰能在这一点帮上大忙。

下面这个例子中,订单表 orders 和订单明细表 orderDetail 数据分别来自两个不同的数据库,二者之间要做join 运算。

两表数据如下:最后想要展现的报表结果如下:编写集算器 SPL 代码如下:A1 连接数据库 1A2 连接数据库 2A3 查询订单表数据A4 查询订单明细表数据A5A6 关闭数据库连接A7 以 A3 的 orderID 和 A4 的 orderID 为主键进行 left join,连接后的结果集有两个字段,第一个字段是 A3 的记录,第二个字段是A4 的记录。

birt报表简单制作

birt报表简单制作

前言此文档作者是北京恒信启华职下员工肖林宝编写。

乃是本人不成熟作品,简单的介绍了birt报表的制作过程。

为的是给各位同事一个参考,文中若有不完善的地方,还请各位同事多多包涵,多提宝贵意见。

根据各个项目上的实际情况,此文档主要介绍birt报表在公共数据源链接下的制作过程。

下面开始进入制作过程。

Birt报表制作过程在这里我用发票表invoice 简单的制作一个根据日期查询并且统计TOTALCOST 的报表。

Sql语句如下:select INVOICENUM,DESCRIPTION,ENTERDATE,TOTALCOST from invoice whereto_date(to_char(ENTERDATE,'yyyy-MM-dd'),'yyyy-MM-dd')>=to_date('2 011-08-01','yyyy-MM-dd')andto_date(to_char(ENTERDATE,'yyyy-MM-dd'),'yyyy-MM-dd')<=to_date('2 011-09-01','yyyy-MM-dd') order by INVOICENUM一.打开birt,选择一个报表文件夹,右键—新建—报表。

如图:给报表取个名字。

如下图:名字取完,点finish(完成),该报表文件夹下就会出现此报表文件,如下图:二.开始对报表进行编辑,双击报表文件,打开报表编辑窗口。

选择script标签,在initialize 下写引入包文件代码,如下图:代码如下:importPackage(.ibm.tivoli.maximo.report.script);importPackage(Packages.java.io);//引入包文件importPackage(Packages.java.util);importPackage(Packages.java.text);mxReportScriptContext = MXReportScriptContext.initialize(reportContext);mxReportScriptContext.setDefaultLogLevel("DEBUG");三、开始给报表添加公用数据源,右键maximoDataSuorce—Add To Report,如下图:你会看到新建的数据源已经出现之后在新建一个数据集,右键Data Sets—New Data Set,如下图:双击Data Set,选择Output Columns,添加字段,如下图:单击选中Data Set,选择script标签,open选项,对sql语句进行编辑,如下图:具体内容如下:maximoDataSet=MXReportDataSetProvider.create(this.getDataSource() .getName(), this.getName());maximoDataSet.open();var sqlText = new String();// Add query to sqlText variable.sqlText = "select INVOICENUM,DESCRIPTION,ENTERDATE,TOTALCOST from invoice where "+ " to_date(to_char(ENTERDATE,'yyyy-MM-dd'),'yyyy-MM-dd')>= to_date('"+params["startdate"]+"','yyyy-MM-dd') "+ " and to_date(to_char(ENTERDATE,'yyyy-MM-dd'),'yyyy-MM-dd') <= to_date('"+params["enddate"]+"','yyyy-MM-dd') order by invoicenum " // Include the Maximo where clause;maximoDataSet.setQuery(sqlText)Sql语句编辑完之后,选择fetch选项,编辑字段,如下图:具体内容如下:if (!maximoDataSet.fetch())return (false);// Add a line for each output column// The specific get method should match the data type of the output column.row["INVOICENUM"] = maximoDataSet.getString("INVOICENUM");row["DESCRIPTION"] = maximoDataSet.getString("DESCRIPTION");row["ENTERDATE"] = maximoDataSet.getString("ENTERDATE");row["TOTALCOST"] = maximoDataSet.getString("TOTALCOST");return (true);以上编辑完之后,开始建立参数,右键report parameter—new parameters,如下图:对参数进行设置,如下图:三.开始绘制报表,选择master page,对纸张进行设置,如下图:选择layout标签,右键空白区域,insert—table,如下图:根据实际情况设置表格行列,这里我根据需要设置成一行四列,如下图:表格如下将数据集中的字段拖到表格上,将数据集与表格进行绑定。

birt报表例子

birt报表例子

birt报表例子BIRT(Business Intelligence and Reporting Tools)是一种开源的报表设计工具,它能够在Java环境下生成高度交互式的报表。

BIRT报表设计工具提供了简单易用的界面,使用户能够方便地创建和自定义各种类型的报表。

在本篇文章中,我们将介绍几个BIRT报表的例子,以帮助读者更好地理解和使用BIRT报表工具。

例子一:销售报表假设我们正在使用一个电商平台来销售商品,并且我们想要分析销售数据以了解最受欢迎的产品和销售业绩。

我们可以使用BIRT报表工具来设计一个销售报表。

该报表可以显示每个产品的销售数量、销售额和销售额占总销售额的比例。

此外,我们可以根据时间过滤数据,比如选择一个特定的月份或者一个特定的时间段。

通过这个报表,我们可以轻松地分析销售数据,以便做出更好的商业决策。

例子二:库存报表假设我们在一个仓库管理系统中,我们想要生成一个库存报表,以了解每个产品的库存情况。

我们可以使用BIRT报表工具来设计一个库存报表。

该报表可以显示每个产品的库存数量、已销售数量和剩余数量。

我们还可以根据产品类别进行分组,并在报表中显示每个类别的总库存数量。

通过这个报表,我们可以很方便地查看和比较不同产品的库存情况,从而更好地管理库存。

例子三:员工绩效报表假设我们是人力资源部门的负责人,我们想要评估员工的绩效以便做出合适的奖励和提升决策。

我们可以使用BIRT报表工具来设计一个员工绩效报表。

该报表可以显示每个员工的绩效评分、销售额和完成的项目数量。

我们还可以在报表中显示各个部门的平均绩效评分和总销售额。

通过这个报表,我们可以更准确地评估员工的表现,并制定相应的奖励和晋升策略。

例子四:学生考试成绩报表假设我们是一所学校的教务处老师,我们想要生成一个学生考试成绩报表,以便分析学生的表现和制定有针对性的教学计划。

我们可以使用BIRT报表工具来设计一个学生考试成绩报表。

该报表可以显示每个学生的各科成绩和总成绩,并可以根据性别、年级或班级进行分组。

BIRT中图表的设置

BIRT中图表的设置

BIRT中图表的设置——饼图、折线图、柱形图一、饼图首先配置好数据源、数据集。

将面板中的图表拖到设计页面中的适当位置,选择图表类型为饼图,3D效果可以选择,图片格式也可以选择(一般默认即可)。

如下图点击下一步,进入数据选择阶段。

选择数据集,然后设置“Category Definition”和“SliceSize Definition”,点击“Category Definition”后的图标,进入分组和排序窗口,将分组中“Enabled”的勾去掉,如图若想饼图中的组成部分有一定的间距,可在图表格式“Format Chart”页面左边的树中选择“Value Series”,在“By Distance”项中设置间距。

如图:二、折线图线图和饼图类似,先配置好数据源、数据集,然后选择图表类型为拆线图。

然后配置横轴(X轴)和纵轴(Y轴)。

若有多项需要比较,可在配置Y轴时选择“< New Series…>”创建多条项目,并指定数据项。

如图:若想设置Y轴的起始刻度不从0开始,可在图表格式页面左边的树中选择“Y-Axis”项,在右边的页面中点击“Scale”按钮,在出现的窗口中设置步长、最小/大刻度等。

如图:三、柱形图和前面一样,先配置好数据源、数据集,然后选择图表类型,类型选择为柱形图。

跟折线图类似,指定X轴和Y轴的数据项。

若有多项需要比较,可在配置Y轴时选择“< New Series…>”创建多条项目,并指定数据项。

如图:若想设置Y轴的起始刻度不从0开始,可在图表格式页面左边的树中选择“Y-Axis”项,在右边的页面中点击“Scale”按钮,在出现的窗口中设置步长、最小/大刻度等。

如图:若想图例的显示标题,可在图表格式页面左边的树中选择“Series ”项,在右边的页面中进行设置。

如图:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【精编推荐】birt动态分组报表制作
1 BIRT报表开发环境准备 3
1.1 BIRT报表开发准备 3
1.2 建立Web Project 3
1.3 配置交叉报表数据源 6
1.3.1 建立公共资源的文件夹 6
1.3.2 建立公共资源Library 7
2 动态分组交叉报表11
2.1 建立报表文件夹11
2.2 建立报表文件12
2.3 复用报表数据源13
2.4 配置交叉报表结果集14
2.5 配置交叉报表分组字段17 2.5.1 新建Data Cuber 17
2.5.2 新建Groups 18
2.6 配置交叉报表求和字段19 2.7 交叉报表表样制作20
2.7.1 新建Cross Tab 20
2.7.2 完成报表表样制作21 2.8 报表分页实现21
2.9 预览交叉报表21
3 部署交叉报表22
4 运行交叉报表22
1BIRT报表开发环境准备
1.1 BIRT报表开发准备
(1)、Ecplise:这里我使用的是Eclipse Platform Version: 3.6.2。

(2)、BIRT插件:可以通过Ecplise中的Install New Software 添加Birt插件。

插件地址://birt/update-site/2.6/
(3)、Tomcat:这里我使用的是apache-tomcat-6.0.16
1.2 建立Web Project
(1)、新建Web Project
为了体现BIRT与实际应用项目相结合的特点,首先建立一个Web Project,工程命名为myReport。

然后单击“Next”,出现下图:
在Project Name中输入“myReport”,工程构建后的class文件输入目录为WebContent/WEB-INF/classes下。

如下图:
然后单击“Next”,出现下图,这里我将“Generate web.xml Deployment descriptor”选项勾选上,让Ecplise来创建web.xml。

然后单击“Finish”,这样“myReport”工程就建立成功了。

1.3 配置交叉报表数据源
1.3.1建立公共资源的文件夹
右击“myReport”工程,选择“New”------“Folder”,弹出下图所示对话框。

在Folder name录入项中输入db,然后点击“Finish”。

公共资源文件夹就建立完成了。

1.3.2建立公共资源Library
右击“db”公共资源文件夹,选择“New”----“Library”,出现下图的弹出窗口,如下:
在“File name”输入项中输入dataSource_library.rptlibrary。

然后单击“Finish”。

然后打开“Data Explorer”,如下图:
右击“Data Source”,在弹出的下拉列表选择项中选择“New Data Source”,如下图:
报表的数据来源于Oracle,但是从弹出的对话框不存在Oracle的连接驱动。

我们可以通过手动添加驱动包的形式。

点击“Manage Drivers”,在弹出的对话框中,单击“Add”按钮,我选择的是oracle数据库自带的驱动jar包,如下图:
然后,将oracle数据库的URL,用户名,密码。

输入相应的信息框中。

可以点击“Test Connection”来测试数据库是否连接正确。

如下图:
2动态分组交叉报表2.1 建立报表文件夹
我在myReport工程下的WebContent文件夹下建立了一个用于存放报表文件的文件夹reports。

2.2 建立报表文件
右击“myReport”工程,选择“New”-----“Report”,出现下图对话框,
然后单击“Next”。

在File name信息框中输入报表文件名称tends_group.rptdesign,然后单击“Next”,会出现一个关于报表类型选择的对话框,这里我采用的是默认选项,然后单击“Finish”。

2.3 复用报表数据源
对该报表使用先前建立的公共数据源,首先打开Resource Explorer窗口,如果当前Ecplise 中未出现Resource Explorer窗口,可以通过以下方法打开。

如下图
打开报表tends_group.rptdesign,将报表模式切换到“Layout”状态下,将dataSource_library 中的数据源“Data Source”拖曳到tends_group中的“Data Source”中,即可完成报表的数据源复用。

2.4 配置交叉报表结果集
在报表“tends_group.rptdesign”的“Layout”模式下,打开“Data Explorer”窗口,右击“Data Sets”,选择“New”-----“New Data Set”。

会出现下图对话框:
这里会要求输入Data Set Name的名字,我采用的是默认“Data Set”。

然后单击“Next”,会出现下图的内容,其中在“Query Text”文本区域中,录入了SQL语句
SQL语句:SELECT ZB,CBZX,YYLY,DL,ZY,SUM(YZ) AS YZ,SUM(JZ) AS JZ,SUM(LJZJ) AS LJZJ,SUM(JZZB) AS JZZB,SUM(KPSL) AS KPSL FROM DWDINFO GROUP BY ZB,CBZX,YYLY,DL,ZY。

如下图:。

相关文档
最新文档