學習Timer類,定製自己的排程器
在上文中,我們說到了如何定時來執行一段java程式,現在就可以與快逸報表的API運算接合在一起了。
先看看快逸的核心API圖,它實際上給了我們一個程式設計來運算報表的思路。
api核心類圖
=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報表了,怎麼傳送這個報表是明天我們理論。。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11677396/viewspace-976994/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 深入 Java Timer 定時排程器實現原理Java
- 深入 Java Timer 定時任務排程器實現原理Java
- Java定時器之Timer學習二Java定時器
- python 學習--定製類Python
- Go timer 是如何被排程的?Go
- OS學習筆記三:處理器排程筆記
- spark on yarn 的資源排程器設定.SparkYarn
- Python學習,給自己的程式碼做個合集,定製自己的桌面軟體!Python
- 學習SQL Server 的任務排程SQLServer
- Timer和TimerTask 任務排程
- Timer(定時器)定時器
- Flink排程之排程器、排程策略、排程模式模式
- Oracle任務排程工具學習Oracle
- 用海豚排程器定時排程從Kafka到HDFS的kettle任務指令碼Kafka指令碼
- Java - Timer定時器Java定時器
- 自適應學習率排程器瞭解一下?
- 分享一些自己的學習過程和學習方法
- 自己學習寫的觸發器觸發器
- 排程器簡介,以及Linux的排程策略Linux
- Pod的排程是由排程器(kube-scheduler)
- Go排程器系列(2)巨集觀看排程器Go
- 稀疏感知&稀疏預定義資料排程器
- Java之定時器TimerJava定時器
- 談談自己學習設計模式的過程設計模式
- RH Timer for MacRed Hot Timer定時器軟體Mac定時器
- ElasticSearch7.3 學習之定製分詞器(Analyzer)Elasticsearch分詞
- Go語言排程器之主動排程(20)Go
- Go排程器系列(3)圖解排程原理Go圖解
- ASP.NET中定製自己的委託和事件引數類ASP.NET事件
- RxJava排程器的選擇RxJava
- Go Runtime 的排程器Go
- goroutine 排程器(scheduler)Go
- MYSQL事件排程器MySql事件
- GO的定時器Timer 和定時任務cronGo定時器
- Go runtime 排程器精講(二):排程器初始化Go
- Go語言排程器之排程main goroutine(14)GoAI
- Go runtime 排程器精講(五):排程策略Go
- Docker定製自己的環境映象Docker