`

使用Report API运行报表

阅读更多
    这个是官方简单运行报表的实例,留作参考还是比较有价值的
import java.util.HashMap;
import java.util.logging.Level;

import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineConstants;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.HTMLActionHandler;
import org.eclipse.birt.report.engine.api.HTMLEmitterConfig;
import org.eclipse.birt.report.engine.api.HTMLRenderContext;
import org.eclipse.birt.report.engine.api.HTMLRenderOption;
import org.eclipse.birt.report.engine.api.HTMLServerImageHandler;
import org.eclipse.birt.report.engine.api.IReportEngine;
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
public class ExecuteReport {

static void executeReport() throws EngineException
{
 HashMap<String, Integer> parameters = new HashMap<String, Integer>();

 String name = "Top Count";
       Integer pvalue = new Integer(4);
 parameters.put(name, pvalue);
 
 IReportEngine engine=null;
 EngineConfig config = null;
 try{
  
  //设置Engine并且启动报表平台
  config = new EngineConfig( );
  config.setEngineHome( "C:/birt-runtime-2_1_1/birt-runtime-2_1_1/ReportEngine" );
  //设置报表日志保存的位置和等级( null, Level ) 如果你不需要日志可以设置为null
  config.setLogConfig("c:/birt/logs", Level.FINE);
  //平台初始化,启用
  Platform.startup( config );
  IReportEngineFactory factory = (IReportEngineFactory) Platform
    .createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
  engine = factory.createReportEngine( config );
  engine.changeLogLevel( Level.WARNING );
  
 }catch( Exception ex){
  ex.printStackTrace();
 }
 
 //设置发起者的一些操作,比如显示图片,报表生成到html页面,很关键的部分
 HTMLEmitterConfig emitterConfig = new HTMLEmitterConfig( );
 emitterConfig.setActionHandler( new HTMLActionHandler( ) );
 HTMLServerImageHandler imageHandler = new HTMLServerImageHandler( );
 emitterConfig.setImageHandler( imageHandler );
 config.getEmitterConfigs( ).put( "html", emitterConfig ); //$NON-NLS-1$
 
 IReportRunnable design = null;
 
 //打开设计好的报表,取绝对路径,最好使用context.getRealPath();这种方法实现,官方这个比较呆
 design = engine.openReportDesign("C:/test/2.1/executereport/test.rptdesign"); 
 
 //创建报表任务
 IRunAndRenderTask task = engine.createRunAndRenderTask(design); 
 
 
 //设置报表的路径和图片显示的路径
 HTMLRenderContext renderContext = new HTMLRenderContext();
 //为所有的actions设置Base URL,这个不写就是默认服务器URL的
 renderContext.setBaseURL("http://localhost/");
 //设置所有图片显示的URL - 如果之前没有emitterConfig.setImageHandler( imageHandler );的话会造成显示的URL是本地的绝对路径,其实http://localhost不写也是可以的,会自动添加服务器的URL
 renderContext.setBaseImageURL("http://localhost/myimages");
 //设置所有图片存放的位置,最好使用context.getRealPath();
 renderContext.setImageDirectory("C:/xampplite/htdocs/myimages");
 //设置图片支持的格式,据官方说必须有SVG,我没写也没出错
 renderContext.setSupportedImageFormats("JPG;PNG;BMP;SVG");
 HashMap<String, HTMLRenderContext> contextMap = new HashMap<String, HTMLRenderContext>();
 contextMap.put( EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, renderContext );
 task.setAppContext( contextMap );
 //设置参数
 task.setParameterValues(parameters);
 //要所有的参数一条一条的写入,例如: task.setParameterValue("Top Count", new Integer(12));
 task.validateParameters();
 
 //增加scrpit参考下面的例子
 //pFilter.myjavamethod()
 //ProcessFilter pf = new ProcessFilter();
 //task.addScriptableJavaObject("pFilter", pf);
 
 //设置rendering操作- 例如file or stream output, output format, whether it is embeddable, etc
 HTMLRenderOption options = new HTMLRenderOption();
 
 //例如:Remove HTML and Body tags
 //options.setEmbeddable(true);
 
 //设置输出本地文件
 options.setOutputFileName("C:/test/2.1/output.html");
 
 //设置输出文件格式
 options.setOutputFormat("html");
 task.setRenderOption(options);
 
 //运行report任务,然后关闭
 //如果要长期留驻的话可以不关闭,我建议不关闭engine和Platform,要不每次打开报表都要等好久……
 task.run();
 task.close();
 engine.shutdown();
 Platform.shutdown();
 System.out.println("Finished");
} 
/**
 * @param args
 */
public static void main(String[] args) {
 try
 {
  executeReport( );
 }
 catch ( Exception e )
 {
  e.printStackTrace();
 }
}
 
}
分享到:
评论
8 楼 fy_kenny 2010-08-04  
当初我研究这个的时候,好困难的
还好,有一个可以运行的产品了
7 楼 624933306 2010-03-31  
楼主,我用类似的方式运行报表。
运行到task.run();的时候报错,说“不支持输出格式html。”
请问如何解决?
急。。。我qq:624933306

2010-3-31 15:54:31 org.eclipse.birt.core.util.BirtTimer logTimeTaken
信息: Engine startup takes 0 Milliseconds.
2010-3-31 15:54:31 org.eclipse.birt.report.engine.api.impl.RunAndRenderTask createContentEmitter
严重: Error.OutputFormatNotSupported
org.eclipse.birt.report.engine.api.EngineException: 不支持输出格式 html。
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.createContentEmitter(RunAndRenderTask.java:97)
at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:174)
at org.crm.server.business.report.ReportManager.runReport(ReportManager.java:345)
at org.crm.server.business.report.ReportManager$$FastClassByCGLIB$$60d565c.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
6 楼 sunshujun132 2008-08-12  
我也遇到了上面的问题,知道答案的,给我也也发一份好吗?
sun.sj@agree.com.cn
5 楼 RogerTu 2008-07-09  
BIRT开发团队就在国内,关于BIRT的问题,还是推荐上其官方中文论坛http://www.actuatechina.com/index.php
4 楼 leweslove 2008-06-10  
2楼哥们,我运行的时候是拷贝platform的。但是我报表是用了参数的。可是用这种API进行部署运行的时候根本没有办法设置参数。
而且这个Servlet里面也没有对参数进行处理啊?!
如果谁有好的方法是不是告诉我一下。
难道要自己再写一个能处理参数的Servlet才可以?!
3 楼 leweslove 2008-06-07  
不能接受报表参数,是么?
2 楼 iamlibo 2008-05-01  
楼上你是缺少了WEB-INF/platform目录.把runtime里的例子下面的这个目录复制过来就可以了.
1 楼 sw371174233 2008-03-20  
大哥,为什么我运行这个例子的时候,运行到
IReportEngineFactory factory = (IReportEngineFactory)Platform.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
这句话的时候,factory这个实例是空,再运行下一步,就会报空指针异常!这是为什么啊??


如果你知道,把原因及解决方法发到我的邮箱里:lj-ye@163.com

谢谢了哈,小弟感激不尽

相关推荐

    Birt基础(report报表简单设计)

    本篇文章将围绕BIRT的基础知识进行讲解,包括其基本概念、安装、设计和运行报表。 **1. BIRT简介** BIRT是一个开放源码的报表平台,它结合了Java和Web技术,使得开发者能够轻松地在各种应用程序中嵌入报表功能。...

    ActiveReport报表控件

    通过解压并研究,你可以深入了解ActiveReport的API,学习如何创建、编辑和运行报表,以及如何处理数据绑定、分组、排序和过滤等报表功能。 通过学习这些资源,开发者不仅可以掌握ActiveReport和水晶报表的使用,还...

    grid++ report在线报表的使用笔记

    1. API接口:Grid++ Report提供了丰富的API,允许开发者进行深度定制,例如自定义数据处理器、样式渲染器等。 2. 插件机制:利用插件机制,可以扩展Grid++ Report的功能,如添加新的图表类型、数据源支持等。 总结...

    grid+report5.6锐浪报表无水印

    这些实例展示了如何在不同编程环境下使用 Grid++Report 的API和类库,帮助开发者快速理解和掌握报表的生成、填充、打印等操作。 5. **API和类库**:Grid++Report 提供了丰富的 API 和类库,开发者可以通过调用这些...

    水晶报表API教程

    5. **运行时交互**:在运行时,你可以使用API控制报表的行为。例如,`ReportDocument.ExportToStream`方法可以将报表导出为各种格式(如PDF、Excel),而`CrystalDecisions.CrystalReports.Engine.SubreportObject`...

    Grid++Report 5 Web报表插件帮助(grweb)

    - **报表记录集数据**:支持直接提供给报表使用的数据集合。 - **参数数据**:支持向报表传递额外的参数数据。 - **查询条件参数**:支持定义报表查询时所需的条件参数。 #### 四、报表插件的使用 - **在网页中...

    birt报表的官方API

    1. **Report Designer API**:这是BIRT的图形化报告设计界面所使用的API,允许开发者创建、编辑和管理报表模板。它提供了诸如添加数据源、创建数据集、插入图表和表格等操作的接口。 2. **Engine API**:在运行时,...

    ActiveReport报表使用案例

    这个"ActiveReport报表使用案例"的压缩包很可能是包含了一系列示例代码和文档,帮助开发者更好地理解和应用ActiveReport。 首先,ActiveReport的核心功能是创建各种类型的报表,包括表格、图表、图像、文本等,它...

    activereport报表控件

    在VB和VC环境下,Activereport报表控件能够无缝集成,这意味着开发者可以直接在代码中调用控件的API,实现动态数据填充、条件格式化、交互式打印和导出等功能。这对于需要实时更新和个性化定制的报表场景尤其有用。...

    报表控件ReportMachine For Delphi 10.3 Rio

    这对于需要跨平台开发的开发者来说是一大福音,尤其是ReportMachine这样的组件,可以在多个平台上无缝运行,提供一致的报表体验。 **ReportMachine的特点** 1. **直观的报表设计界面**:ReportMachine提供了一个...

    基于JavaReport的Web报表开发

    JavaReport提供了三种版本:专业版、服务器版和企业版,所有版本都免费使用,但针对不同规模的应用系统有不同的限制和优化。 - **专业版**:适合中小型系统,限制了最大连接数为10,保证系统稳定运行。 - **服务器...

    Grid++Report 扩展 报表控件 可扩展 可动态添加

    5. **易用性与灵活性**:Grid++Report的用户界面友好,提供了丰富的API和设计工具,使得开发者能够快速上手并轻松设计出符合业务需求的报表。此外,它的灵活性使得控件能够无缝集成到各种开发框架和环境中,如.NET ...

    Style Report报表服务管理手册

    - **《可视化设计器指南》(&lt;Report Design Guide&gt;)**:该文档详细介绍了如何使用Style Report的可视化设计器来创建报表模板。内容覆盖了QueryBuilder(用于定义数据源和查询的工具)、报表元素(如表格、图表等)...

    Grid++Report 5.5 锐浪报表

    锐浪报表是一款在中国广泛应用的专业报表工具,...综上所述,Grid++Report 5.5 是一款成熟且功能丰富的报表解决方案,尤其在报表设计和打印预览方面,为用户提供了专业且无干扰的使用体验,是企业级应用的理想选择。

    birt报表 API 实例 1.rar

    BIRT报表API是一个强大的开发接口,允许开发者通过编程方式与BIRT引擎交互,实现报表的生成、修改、运行等功能。API主要分为以下几个部分: 1. Engine API:提供了报表设计、编译、渲染等核心功能。 2. Data Access...

    Report Machine 2.6 (报表控件包)

    1. **直观的用户界面**: Report Machine 2.6 提供了一个易于使用的图形化界面,使得非技术人员也能设计出专业级别的报表。用户可以通过拖放方式添加数据字段、设置样式、调整布局,大大降低了报表制作的门槛。 2. *...

    Grid++Report5报表控件

    7. **高效性能**:Grid++Report5优化了数据处理算法,即使面对大数据量的报表,也能保持良好的运行效率,减少内存占用,提升用户体验。 8. **试用版与商业版**:提供免费试用版本,让开发者有机会在实际项目中评估...

    AC Report 中国式报表组件 V1.9

    3. demos:这是一个目录,可能包含了各种示例程序或代码,用户可以通过运行这些示例来学习如何使用AC Report组件,理解其各种功能和特性。 4. delphi5、delphi7、doc、delphi6:这些目录或文件可能分别对应不同的...

    csharp_win_dynamic_report_formula.zip_formula_report_水晶报表_水晶报表 c

    标题 "csharp_win_dynamic_report_formula.zip_formula_report_水晶报表_水晶报表 c" 暗示了这个压缩包包含的是一个关于C#环境下使用水晶报表(Crystal Reports)进行动态报告生成和公式运用的实例项目。水晶报表是...

Global site tag (gtag.js) - Google Analytics