`
cyfgod
  • 浏览: 64042 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[原创]BIRT2.3中的数据导出功能扩展应用

    博客分类:
  • BIRT
阅读更多
在BIRT2.3版本之前,BIRT Viewer只支持默认的CSV格式的数据导出,用户很难自定义导出格式和一些导出的逻辑,很难扩展化。从BIRT2.3之后,总算加入了对数据导出功能的扩展。用户可以很方便的自定义导出格式,可以在代码中添加自已的处理逻辑。所有这些,都基于BIRT提供了一个新的Extension Point--"org.eclipse.birt.report.engine.dataExtraction"。

BIRT提供了一个默认的实现,导出为CSV格式。用户完全可以基于这个实现的代码,实现自已的导出格式,如导出为XML格式,甚至可以保存到数据库。

下面我将给出一个大致的实现步骤:

1) 在eclipse下,新建plugin project。
2) 修改plugin.xml,添加extenion point定义。举例如下:

    <?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
   <extension
         point="org.eclipse.birt.report.engine.dataExtraction">
         <dataExtraction
         id = "org.eclipse.birt.report.engine.dataextraction.xml"
         name = "XML"
      format = "xml"
      mimeType = "text/xml"
      class = "org.eclipse.birt.report.engine.dataextraction.xml.DataExtractionImpl"/>
   </extension>
</plugin>

注意,id, name, format,mimeType, class都是必须的。

3) 实现IDataExtractionExtension接口
    该接口主要有三个方法:
public void initilize( IReportContext context, IDataExtractionOption option ) throws BirtException
public void output( IExtractionResults results ) throws BirtException
public void release( )

initialize方法会传入报表相关的IReportContext对象,如果需要获取报表相应的信息,可以通过该对象。

IDataExtractionOption对象是从BIRT viewer传入的一些参数。
如:
(Map) this.option.getOption( "birt.viewer.parameters" )--得到viewer相关的参数(包含用户在url上传入的自定义参数)
(Locale)this.option.getOption("birt.viewer.locale")--得到locale信息
(String[])this.option.getOption("birt.viewer.export.columns")--得到选中的columns。

具体的实现逻辑可以在output方法里实现,应该非常容易理解。

4) 最后一步当然是发布了,非常简单,打包成plugin,然后放到WEB-INF/platform/plugins下就可以了,注意BIRT已经有了一个org.eclipse.birt.report.engine.dataextraction.csv.jar的plugin,和它放一起就行了。

5) 打开页面,在export dialog里就会看到多了一个XML的导出选项了。

好了,就说这些了~~~~~大家可以自已去尝试一下。
分享到:
评论
2 楼 cyfgod 2008-11-23  
zuoming99 写道

请问如果我想自己写excel的导出功能的话,是不是也要这样?
因为birt的frameset模式有些慢,客户用起来很不爽

这个只是用于数据的导出,和报表导出功能不一样。
现在BIRT提供Excel的报表导出功能,如果自已想扩展的话,可以扩展BIRT Engine的相关plugin extension。现在提供导出html/word/excel/pdf/ps/powerpoint......
1 楼 zuoming99 2008-11-14  
请问如果我想自己写excel的导出功能的话,是不是也要这样?
因为birt的frameset模式有些慢,客户用起来很不爽

相关推荐

Global site tag (gtag.js) - Google Analytics