`
happyanyday
  • 浏览: 82718 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论
阅读更多
BIRT报表
1.概述

网站: http://www.eclipse.org/birt/phoenix/

BIRT报表 拥有和Dreamweaver一般的操作界面,可以像画table一样画报表,生成图片,导出Excel,html分页样样齐全,样式和script设置简单,貌似还有OLAP导航功能,JasperReport注定要被打入冷宫了。

特别留意,SpringSide里仿照Spring集成JasperReport的做法,集成了Birt View。

另外特别Demo了把查询语句统一写在SaleReportManager里,对查询语句综合处理与重用,而不是默认的在每个模版文件里面写SQL。

学习资料:

     1.Birt的IBM DW的中文教程:http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/,
     2.最权威、详细的莫过于birt 官方文档
     3.难得的比较全面的 BIRT 中文指南
     4.Flash Demo
2.部署BIRT2.1
2.1. 拷贝文件

将/plugins, /configuration两个目录复制到webapp 根目录, 将lib复制到webapp/WEB-INF/lib
2.2. 瘦身

     Birt实在太过庞大,如果将以上三个目录全拷的话几十M.因此,可以参考SS里对/lib/birt 和 webapp/plugins目录反复试验后的精简。
     另外,/lib和/plugins有好多jar是重复的,只要在编译时把jar 从一个目录copy过去就行。又要注意两个目录里相同的jar的命名并不相同,而/plugins里面的文件名很严格,可参考build.xml里的这段复制命令

        <copy file="lib/birt/com.ibm.icu-3.4.4.1.jar" tofile="${web.dir}/plugins/com.ibm.icu_3.4.4.1.jar"/>
        <copy file="lib/birt/js-2.1.jar" tofile="${web.dir}/plugins/org.mozilla.rhino/lib/js.jar"/>
        <copy file="lib/birt/chartengineapi-2.1.jar" tofile="${web.dir}/plugins/org.eclipse.birt.chart.engine_2.1.0.N20060628-1351.jar"/>
        <copy todir="${web.dir}/plugins">
            <fileset dir="lib/birt">
                <include name="org.eclipse.emf.*"/>
              </fileset>
        </copy>

3.将spring与birt集成在一起
3.1 why not 说明
      3.1.1 为什么没有使用 birt report viewer

BIRT Report Viewer 貌似做得很周到,提供如浏览,打印,export to CSV ,过滤参数的传入等一系列的快速操作.

然而细心思考过,这个viewer还是存在不少问题:

如不适用的报表传入参数方式(无输入验证,无日期控件);代码复杂,可扩展性差......

发现不少功能形同虚设,所以决心抛弃.
     3.1.2 为什么不在.rptdesign里写sql

往往实际项目的业务总是复杂的,不希望将复杂的逻辑通过几个简单的参数传入拼凑sql来实现,再说这样调试sql也是一件麻烦的事情,也不利于SQL管理

所以我们提倡 将查询的商业逻辑放回java Manager类,然后designer负责设计数据如何排列。这样子更适和实际项目.
3.2 自己实现的BirtReportsView的原理

    实现Spring MVC的View,关键是重载它的protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) 函数
   3.2.1 创建 EngineConfig 与 ReportEngine  实例

  public class BirtReportsView extends AbstractUrlBasedView {


 
   private String engineHome;
   private ReportEngine engine;
   
   public BirtReportsView() {
        engineHome = System.getProperty("bookstore.root");  //engine home
        EngineConfig birtConfig = new EngineConfig();
        birtConfig.setEngineHome(engineHome);
        engine = new ReportEngine(birtConfig);
    }




    }

    3.2.2  设定报表文件

    public void openReportDesign(String filePath) throws IOException, EngineException {
        File reportFilte = new File(engineHome + "/" + filePath);
        IReportRunnable design = engine.openReportDesign(reportFilte.getAbsolutePath());
        task = engine.createRunAndRenderTask(design);
       }

     3.2.3  配置 htmlrendercontext

private String scriptableJOName = "dsFactory"; //dsFactory 自由定义,主要在rptdesign中调用
private String imageDirectory = "/report/images";
private String baseImageUrl = "images";


private void run(OutputStream outputStream) throws EngineException {

        HTMLRenderContext renderContext =  new         HTMLRenderContext();  


        //chart 生成图片目录
        renderContext.setImageDirectory(this.engineHome + "/" + imageDirectory);
   

        //web页面浏览 base url
        renderContext.setBaseImageURL(baseImageUrl);
        HashMap contextMap = new HashMap();
        contextMap.put(EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, renderContext);

 
        task.setAppContext(contextMap);




        BirtDataSourceObject birtDataSourceObject = new BirtDataSourceObject();
        HTMLRenderOption options = new HTMLRenderOption();
        birtDataSourceObject.setResultList(resultList);
        options.setOutputStream(outputStream);
        task.setRenderOption(options);

        //增加api级别的java对象,以方便报表中调用获取报表数据
        task.addScriptableJavaObject (scriptableJOName, birtDataSourceObject);
        task.run();
}

相关文章:
1.BIRT and POJOs as datasources example
2.详细的 Report Engine API 请见[官方 ]
3.3 Birt View的使用

见SaleReprontController.

public ModelAndView view(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String status = request.getParameter("status");
        String beginDate = request.getParameter("beginDate");
        String endDate = request.getParameter("endDate");
        List bookList = saleReportManager.findBooksByReportParam(status,
                DateUtil.parse(beginDate, "yyyy-M-d"), DateUtil.parse(endDate, "yyyy-M-d"));
       BirtReportView view = new BirtReportView();
        view.openReportDesign("/report/sale_report.rptdesign");
        view.putModel(bookList);
        return new ModelAndView(view);
    }

分享到:
评论
1 楼 dlut_zxf 2008-07-01  
同意搂主不在.rptdesign里写sql的说法。报表属于表现层的,sql属于数据层的,最好有清晰的边界。如果在报表里写sql,一旦数据结构发生改变,报表很难修改。用DAO访问数据,再用JavaScript的数据源将数据引入报表是好的选择。

http://www.actuatechina.com

相关推荐

    Birt报表操作手册

    Birt报表操作手册 Birt报表操作手册是一个功能强大的报表设计和生成工具,提供了灵活的报表设计和生成功能。下面是对Birt报表操作手册中的知识点的详细解释: 报表设计 在Birt报表操作手册中,报表设计是指创建...

    birt 报表教程 中文

    ### BIRT报表设计基础知识点详解 #### 一、BIRT报表设计概览 **BIRT (Business Intelligence and Reporting Tools)** 是一款开源的商务智能和报表工具,主要用于开发和部署复杂的数据报表。它提供了丰富的功能来...

    maximo系统birt报表的eclipese开发配置及导入系统

    本篇文章将详细介绍如何配置Eclipse开发环境,以便在Maximo系统中开发和导入BIRT报表。 首先,你需要确认Maximo系统的版本,因为不同的Maximo版本可能需要匹配特定版本的BIRT报表工具。例如,Maximo 7.5对应的是...

    Birt报表开发手册

    Birt报表开发手册 本手册旨在帮助开发者快速了解和掌握Birt报表开发技术,适用于Birt 2.1.3版本。下面是手册中所涉及的知识点: 一、Birt介绍 Birt(Business Intelligence and Reporting Tools)是一款开源的...

    BIRT报表学习手册-中文

    BIRT报表学习手册 对于BIRT报表学习手册,这篇文章将详细介绍BIRT报表的使用方法和技巧,从基本的报表设计到高级的报表功能,涵盖了许多实用的知识点。 一、去掉BIRT报表自动生成的日期时间 在BIRT报表中,有时候...

    birt报表参数的使用

    Birt报表参数的使用 本文总结了Birt报表参数的使用机制,并结合实例详细地阐述了参数的各种使用方法,最后介绍了Birt报表的源代码级使用。 1. 参数机制 Birt报表参数具有变量的作用,为Birt报表的生成提供了一种...

    BIRT报表开发手册

    BIRT报表中文开发手册 PDF版本 BIRT Business Intelligence and Reporting Tools 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统 特别之处在于它是以 Java 和 JavaEE 为基础 BIRT 有两个主要组件:基于 ...

    BIRT报表学习手册

    BIRT报表学习手册 BIRT(Business Intelligence and Reporting Tools)是一种强大的开源报表系统,主要用于创建复杂的商业智能和报表。它是基于Eclipse平台构建的,因此能够无缝集成到Java和J2EE环境中,为Web应用...

    birt报表开发 (二)、birt报表初体验-第一个报表

    在本篇博文中,我们将深入探讨"Birt报表开发"的第二部分——"Birt报表初体验-第一个报表"。Birt(Business Intelligence and Reporting Tools)是开源的企业级报告解决方案,它提供了一种强大的方式来创建、设计和...

    birt报表页面显示汉化文件及过程说明

    在本文中,我们将深入探讨如何实现BIRT报表的页面显示汉化,这涉及到对BIRT原有jar包中的英文资源文件进行替换,以显示中文界面。BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会下的一个开源...

    birt报表详细中文文档

    这个“birt报表详细中文文档”提供了全面的指南,帮助用户理解和利用BIRT的各项功能。 BIRT的核心特性包括: 1. **设计环境**:BIRT Report Designer是基于Eclipse IDE的集成开发环境,允许用户通过拖放方式创建...

    Birt报表工具设计指南

    **Birt报表工具设计指南** Birt(Business Intelligence and Reporting Tools)是一款开源的企业级报表工具,主要用于生成高质量的报表和数据分析。它集成了Eclipse IDE,使得开发人员可以在熟悉的环境中设计复杂的...

    birt报表的官方API

    在开发BIRT报表时,理解和掌握其官方API至关重要,因为这将直接影响到报表的设计、数据处理以及功能实现。 首先,我们要理解BIRT API的核心组成部分: 1. **Report Designer API**:这是BIRT的图形化报告设计界面...

    birt报表资料_珍藏.rar

    【BIRT报表技术详解】 BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会下的一个开源项目,专门用于生成丰富的报表和数据分析。它提供了一个全面的报表系统,支持从各种数据源提取数据,创建复杂...

    birt报表,很好的java报表插件

    标题“birt报表,很好的java报表插件”所体现的关键知识点包括: 1. **BIRT的性质**:BIRT是一个基于Java的报表系统,它以插件的形式嵌入到Eclipse IDE中,使得开发人员能够方便地在Java应用中添加报表功能。 2. **...

    birt报表合并以及表头锁定功能的实现

    birt报表合并以及表头锁定功能的实现。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    开源birt报表实例

    开源BIRT报表实例是基于Eclipse的开源报告生成工具,专为开发人员提供了一套强大的数据可视化和报表设计解决方案。这个实例集成了多种关键功能,包括维度立方体(Cube)、脚本支持以及动态参数传递,使得报表制作...

    如何构建Birt报表应用程序

    构建Birt报表应用程序涉及到多个步骤和技术要点,这里将详细解释Birt报表引擎的基本概念、安装过程以及初步使用方法。 Birt全称为Business Intelligence and Reporting Tools,是一个由Eclipse基金会维护的开源报表...

    BIRT报表开发指南(中文版)

    **BIRT报表开发指南中文版** BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会下的一款开源报表系统,主要用于生成动态、交互式的Web报表。它提供了丰富的图表、表格和自定义组件,支持多种数据...

    birt报表工具

    ### BIRT 报表工具详解 #### 一、BIRT 报表工具简介 BIRT (Business Intelligence and Reporting Tools) 是一款开源的报表系统,它为开发者提供了强大的数据展现功能。BIRT 作为 Eclipse 项目的一部分,充分利用了...

Global site tag (gtag.js) - Google Analytics