首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > VSTS >

第十五章 高级特点-开放源码:BIRT报表CVS构建

2013-02-18 
第十五章 高级特性-开放源码:BIRT报表CVS构建15.1 使用CVS构建BIRT报表设计器和引擎BIRT报表提供了在设计

第十五章 高级特性-开放源码:BIRT报表CVS构建

15.1 使用CVS构建BIRT报表设计器和引擎

BIRT报表提供了在设计阶段开放脚本编辑器,添加javascript和java事件机制来扩展报表的使用,另外还提供了包括数据源,数据项,聚合函数,数据展示,数据导出等等一系列的扩展接口,这对于一般的用户来实现丰富多彩的报表已经足矣。不过BIRT报表作为开源社区报表类别使用率最大的报表框架,开放源代码以及组织良好的源码和类库功不可没。这对于想深度定制报表功能的用户是个很大的福音。

使用CVS构建BIRT报表设计器和引擎在官网上有一个详细的介绍,地址如下:

http://www.eclipse.org/birt/phoenix/build/buildInstructions.php

大概的步骤如下:

首先用Eclipse连上BIRT的CVS

第十五章 高级特点-开放源码:BIRT报表CVS构建

第十五章 高级特点-开放源码:BIRT报表CVS构建

填写地址路径用户名端口等信息:

Host

dev.eclipse.org

Repository path

/cvsroot/birt

User

anonymous

Connection type

pserver

Use Default Port

Selected

第十五章 高级特点-开放源码:BIRT报表CVS构建

在CVS的源文件夹下 的/ home / BIRT BIRT模块。BIRT有超过150个模块,其中的一些描述如下。

项目文件夹

内容

org.eclipse.birt.chart.device.extension

扩展类的设备渲染架构的图表

org.eclipse.birt.chart.engine

图表模型和工厂类

org.eclipse.birt.chart.engine.extension

扩展类的模型渲染架构的图表

org.eclipse.birt.chart.reportitem

BIRT报表设计器和运行时引擎的图表模块的类进行交互

org.eclipse.birt.chart.shared

图表模块的不同组件之间的共享的类

org.eclipse.birt.chart.ui

图表生成器UI类

org.eclipse.birt.chart.ui.extension

图表生成器UI的扩展

org.eclipse.birt.chart.device.extension

图表引擎扩展插件包含设备的渲染器实现(的Swing,SWT,PNG,GIF,JPG,BMP)

org.eclipse.birt.chart.device.svg

图表引擎扩展插件的渲染器实现SVG装置

org.eclipse.birt.converters

包含转换器,可以转换成其他格式的报告,的BIRT报表格式的

org.eclipse.birt.core

加载插件在运行时提供了一个框架,并包含其他类,它们可用于由任何其他模块

org.eclipse.birt.data

提供的数据引擎执行情况和官方发布的工厂实现。它也包含类应用的数据转换。

org.eclipse.birt.data.oda

官方发布的公共接口:用于创建数据扩展的类和接口。

org.eclipse.birt.data.oda.adapter.dtp

适配器的数据工具项目

org.eclipse.birt.report.data.oda.flatfile

官方发布的访问平面文件数据源驱动程序

org.eclipse.birt.report.data.oda.flatfile.ui

官方发布的平面文件驱动器的用户界面

org.eclipse.birt.data.oda.jdbc

官方发布的JDBC驱动程序

org.eclipse.birt.data.oda.jdbc.ui

官方发布的JDBC驱动程序的用户界面

org.eclipse.birt.report.data.oda.sampledb

官方开发的示例数据库驱动程序

org.eclipse.birt.report.data.oda.sampledb.ui

官方开发的示例数据库驱动程序的用户界面

org.eclipse.birt.data.oda.xml

ODA驱动程序来访问XML数据源

org.eclipse.birt.data.oda.xml.ui

ODA驱动程序来访问XML数据源的用户界面

org.eclipse.birt.report.debug.ui

用于创建启动配置调试包含Java事件的报告时

org.eclipse.birt.report.designer.core

核心类的BIRT报表设计器,包括的BIRT模型的类互动,本地化和其他实用工具类

org.eclipse.birt.report.designer.lib

用于库操作的类

org.eclipse.birt.report.designer.lib.explorer

处理库内容的浏览和探索

org.eclipse.birt.report.designer.ui

BIRT报表设计器

org.eclipse.birt.report.designer.ui.rcp

BIRT RCP报告设计器

org.eclipse.birt.report.engine

BIRT报表引擎,生成报表的报表设计

org.eclipse.birt.report.engine.emitter.fo

发射器,用于生成报表输出FO

org.eclipse.birt.report.engine.emitter.html

在HTML生成报表输出的发射器,

org.eclipse.birt.report.engine.emitter.pdf

发射器,生成报表输出PDF

org.eclipse.birt.report.model

BIRT报表模型

org.eclipse.birt.report.viewer

BIRT报表查看器(BIRT Web应用程序)

org.eclipse.birt-feature 

BIRT功能

第十五章 高级特点-开放源码:BIRT报表CVS构建

导入iText的1.3和 iTextAsian到com.lowagie.itext / lib目录中。  

第十五章 高级特点-开放源码:BIRT报表CVS构建

从源码中复制三个插件到当前项目根目录下:

org.apache.batik.pdf_1.6.0.v20060623-1511
org.apache.batik_1.6.0.v20060623-1511
org.apache.xerces_2.8.0.v20060815-0630
重命名如下:
org.apache.batik.pdf
org.apache.batik
org.apache.xerces 

用ant编译:

第十五章 高级特点-开放源码:BIRT报表CVS构建

第十五章 高级特点-开放源码:BIRT报表CVS构建

这样,在源码中改变视图viewer语言,汉化视图的方法如下:

在Source里有一个nl的文件夹 里面有很多国际化文件

打开org.eclipse.birt.report.viewer.nl这个包的src/org/eclipse/birt/report/resource下边可以看到几个msg文件

接着Check out Message_zh_CN.msg这个msg文件

直接打开会是乱码的 需要通过 native2ascii -encoding gbk BirtResources_zh_CN.msg BirtResources_zh_CN.properties 来编码(也可以直接使用UE等高级文本工具打开后直接复制出来)。

最后复制这个编码后的文件压到 lib/viewServlets.jar这个包的

/org/eclipse/birt/report/resource目录下

注意目录和包路径不要放错了,我几次都放错位置而且把文件名也弄错了。

接着就可以通过__locale=zh-CN的属性来访问中文的BIRT view了

 

扩展报表其它格式文件的导出和显示也可以直接从源码入手,例如增加一个csv格式的render:

import org.eclipse.birt.report.engine.api.IRenderOption;import org.eclipse.birt.report.engine.api.RenderOption;public class CSVRenderOption extends RenderOption {public static final String OUTPUT_FORMAT_CSV = "xls";public CSVRenderOption() {super();}public CSVRenderOption(IRenderOption options) {super(options);}}

在报表引擎那里这样调用的:

// PDFIRenderOption pdfOptions;pdfOptions = new PDFRenderOption();pdfOptions.setOutputFormat(PDFRenderOption.OUTPUT_FORMAT_PDF);pdfOptions.setOutputFileName("D:/birt/test.pdf");task.setRenderOption(pdfOptions);task.run();// HTMLIRenderOption htmlOptions;htmlOptions = new HTMLRenderOption();ByteArrayOutputStream bos = new ByteArrayOutputStream();htmlOptions.setOutputStream(bos);htmlOptions.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);task.setRenderOption(htmlOptions);task.run();browser.setText(bos.toString());// CSVIRenderOption csvOptions;csvOptions = new CSVRenderOption();csvOptions.setOutputFileName("D:/birt/test.xls");csvOptions.setOutputFormat(CSVRenderOption.OUTPUT_FORMAT_CSV);task.setRenderOption(csvOptions);task.run();// destroy the tasktask.close();engine.destroy();

这样会分别导出为Excel文件,pdf文件,同时用HTML的形式显示在browser上。
同时在plugin.xml和sillycatGen.product上面都要添加上这个包:
org.eclipse.birt.report.engine.emitter.prototype.excel

改变导出文件编码的方式如下,以导出CSV数据为例:

找到输出csv数据的代码找到org.eclipse.birt.report.viewer/birt/WEB-INF/classes/org/eclipse/birt/report/service/ReportEngineService.java. 找到extractData这个函数,这个函数是负责输出数据到csv文件的.这个函数里面有两个outputStream.write( buf.toString( ).getBytes( ParameterAccessor.UTF_8_ENCODE ) );把这两行语句改为outputStream.write( buf.toString( ).getBytes( "GBK" ) );

把修改了的文件进行编译,把这个class文件替换viewservlets.jar包中的ReportEngineService文件.最后在把这个包放到lib下.这样问题得到解决.

当然,通过修改源代码还能进行更多复杂的功能,比如增加报表预览时的权限审核,增加数据源,数据集,数据项等等。

热点排行