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工程里定时生成报表。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值