學習Timer類,定製自己的排程器

figo886發表於2007-10-16

在上文中,我們說到了如何定時來執行一段java程式,現在就可以與快逸報表的API運算接合在一起了。
先看看快逸的核心API圖,它實際上給了我們一個程式設計來運算報表的思路。

api核心類圖
學習Timer類,定製自己的排程器=700) window.open('');" src="" width="700" onload="if(this.width>'700')this.width='700';if(this.height>'700')this.height='700';" border="0" />

ok,根據這個圖,我們就可以寫java程式碼來運算報表了。
public static void run() throws Exception{
String reportFile = "E:/Projects/web4.runqian.com.cn/WebRoot/reportFiles/code/1/1.1/1.1.5/myreport.raq"; //報表檔案
String exportFile = "E:/temp/myreport.htm"; //匯出的檔案
//注意,這裡是伺服器的授權檔案,如果是客戶端的授權檔案,請安裝加密狗驅動程式
String lisenseFile = "E:/Projects/web4.runqian.com.cn/WebRoot/WEB-INF/潤乾開發svr開發版.lic"; //授權檔案

//第一步,讀取報表模板
ReportDefine rd = (ReportDefine) ReportUtils.read( reportFile );

//第二步,設定報表授權檔案,運算報表
ExtCellSet.setLicenseFileName( lisenseFile );
Context context = new Context();
Engine enging = new Engine( rd, context);
IReport iReport = enging.calc();

//第三步,儲存為html檔案,注意,這是我們用郵件傳送的物件
HtmlReport hReport = new HtmlReport( iReport,"report1" );
FileOutputStream fos = new FileOutputStream( exportFile );
String html = hReport.generateHtml();
fos.write( html.getBytes() );
}

根據以上分析的,我們寫出整體的程式。
package one;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.util.Timer;
import java.util.TimerTask;

import com.runqian.report4.model.ReportDefine;
import com.runqian.report4.model.engine.ExtCellSet;
import com.runqian.report4.usermodel.Context;
import com.runqian.report4.usermodel.Engine;
import com.runqian.report4.usermodel.IReport;
import com.runqian.report4.view.html.HtmlReport;
import com.runqian.report4.util.*;

public class RunReoprtInTime {

String exportFile = "E:/temp/myreport.htm"; //匯出的檔案
private final Timer timer = new Timer();
private final int minutes;

public RunReoprtInTime(int minutes) {
this.minutes = minutes;
}

public void start() {
timer.schedule(new TimerTask() {
public void run() {
runReport();
}

private void runReport() {
System.out.println("Your report is runing!");
try{
RunReoprtInTime.run();
}catch(Exception ex){
ex.printStackTrace();
}
}
//設定一小時執行一次
}, minutes * 1 * 1000 , minutes * 60 * 1000);
}


public static void run() throws Exception{
String reportFile = "E:/Projects/web4.runqian.com.cn/WebRoot/reportFiles/code/1/1.1/1.1.5/myreport.raq"; //報表檔案

//注意,這裡是伺服器的授權檔案,如果是客戶端的授權檔案,需要安裝加密狗驅動程式
String lisenseFile = "E:/Projects/快逸授權.lic"; //授權檔案

//第一步,讀取報表模板
ReportDefine rd = (ReportDefine) ReportUtils.read( reportFile );

//第二步,設定報表授權檔案,運算報表
ExtCellSet.setLicenseFileName( lisenseFile );
Context context = new Context();
Engine enging = new Engine( rd, context);
IReport iReport = enging.calc();

//第三步,儲存為html檔案
HtmlReport hReport = new HtmlReport( iReport,"report1" );
FileOutputStream fos = new FileOutputStream( exportFile );
String html = hReport.generateHtml();
fos.write( html.getBytes() );
}


public static void main(String[] args) {
RunReoprtInTime eggTimer = new RunReoprtInTime(1);
eggTimer.start();
}
}

好了,我們已經在硬碟上定時生成HTML報表了,怎麼傳送這個報表是明天我們理論。。

http://blog.programfan.com/blog.asp?author=by_ts by_ts

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11677396/viewspace-976994/,如需轉載,請註明出處,否則將追究法律責任。

相關文章