`
huhuanqadn
  • 浏览: 102189 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

birt定时生成报表(上)

    博客分类:
  • birt
阅读更多
今天我先说在CS程序中如何定时生成报表,
代码如下:
package com;

import java.util.Timer;
import java.util.TimerTask;
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.HTMLRenderOption;
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;
import org.eclipse.birt.report.engine.api.PDFRenderOption;

public class TimerTest {
       
        private int i;                                //设定这个i是方便我测试的,后面会说到。
        private void timeTest(){
                Timer t = new Timer();          //构造定时器
                t.schedule(new MyTask(), 0,1000);         //执行任务。表示立即执行,并隔1秒后再次执行
       
        }
        public static void main(String args[]){
                new TimerTest().timeTest();  
        }
       
        private class MyTask  extends TimerTask{

                @Override
                public void run() {
                        i++;               
                        runReport(i);              //运行报表
                }
               
        }
       
        private void  runReport(int i) {
                IReportEngine engine=null;
                EngineConfig config = null;

                try{
                        config = new EngineConfig( );                       
                        config.setBIRTHome("F:/language/report/birt/soft/birt-runtime-2_3_0/birt-runtime-2_3_0/ReportEngine");                  //这是CS程序,直接设置birthome
                        Platform.startup( config );
                        IReportEngineFactory factory = (IReportEngineFactory) Platform
                        .createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
                        engine = factory.createReportEngine( config );               

                        IReportRunnable design = null;
                        //Open the report design
                        design = engine.openReportDesign("reports/test2.rptdesign");      //打开这个已经写好的报表文件
                        IRunAndRenderTask task = engine.createRunAndRenderTask(design);                
                        task.setParameterValue("id", i);     //设置报表参数为i(这个i第次会加1,上面写i++了。)
                       
                        HTMLRenderOption options = new HTMLRenderOption();               
                        options.setOutputFileName("output/test"+i+".pdf"); //设置生成的pdf名称,动态的。
                        options.setOutputFormat("pdf"); //设置显示格式为pdf,可以改成html
                        options.setHtmlRtLFlag(false);
                        options.setEmbeddable(false);
                               

                        task.setRenderOption(options);
                       
                        task.run();
                       
                        System.out.println("succuess");
                        task.close();
                        engine.destroy();
                }catch( Exception ex){
                        ex.printStackTrace();
                }               
                finally
                {
                       Platform.shutdown( );
                }
        }
       
}


就这么简单报表会每隔一秒终运行一次,并把参数设置成不同,在保存的pdf里可能查看到参数的变化。
说明:.test2.rptdesign这是个随便建立的报表,我这里传了个参数,没多大用,
但我演示了很重要的东西,就是设置参数,我们的报表运行可能是要传动态参数的,在这里就可以设置了。
不早了,我先写这篇吧,有时候写下篇,在web工程里定时生成报表。
5
0
分享到:
评论
2 楼 zrs217 2010-08-26  
貌似不行的,只能顺利执行一次,下一次就报错的!我测试了就是这样,原以为是时间间隔太短,我改成两分,还是在第二次报错的!
1 楼 chenhua_1984 2009-05-04  
不错!收藏下!◎

相关推荐

    dhwani_backend_task

    这对于自动化数据备份、报表生成等场景尤其有用。 **5. 错误处理与监控:** 任何后台任务处理框架都应提供错误处理机制,包括日志记录、异常跟踪和通知。"dhwani_backend_task"可能会整合一些监控工具(如New Relic...

    vc++ 应用源码包_1

    它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。...

    vc++ 应用源码包_2

    它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。...

    vc++ 应用源码包_6

    它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。...

    vc++ 应用源码包_5

    它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。...

    vc++ 应用源码包_3

    它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。...

Global site tag (gtag.js) - Google Analytics