快逸報表雖支援標籤式部署,但理解其 API 呼叫流程有助於深度整合與疑難排解。本文示範在 JSP 中透過 API 完成報表模板載入、參數注入、資料源連接、HTML/Excel 輸出。
ReportUtils.read(InputStream) 反序列化 ReportDefine 物件。DriverManager.getConnection 取得 JDBC 連線,封裝為 DriverContext。ReportProcessor.process(ReportDefine, DriverContext) 產生 ReportInstance。HtmlView.render() 或 ExcelView.render() 輸出至 HttpServletResponse。<%@ page import="com.runqian.report4.model.*" %>
<%@ page import="com.runqian.report4.util.*" %>
<%@ page import="com.runqian.report4.view.Html.*" %>
<%@ page import="java.sql.*" %>
<%
String report = request.getParameter("report");
if (!report.endsWith(".raq")) report += ".raq";
// 1. 載入模板
InputStream is = application.getResourceAsStream("/reportFiles/" + report);
ReportDefine rd = (ReportDefine) ReportUtils.read(is);
// 2. 建立資料庫連線
Driver drv = (Driver) Class.forName("com.newatlanta.jturbo.driver.Driver").newInstance();
DriverManager.registerDriver(drv);
Connection conn = DriverManager.getConnection(
"jdbc:JTurbo://127.0.0.1/web4/charset=GBK", "sa", "pwd");
// 3. 建立處理器並運算
DriverContext dc = new DriverContext(conn);
ReportProcessor rp = new ReportProcessor();
ReportInstance ri = rp.process(rd, dc);
// 4. HTML 輸出
HtmlView hv = new HtmlView();
hv.render(ri, response.getOutputStream());
%>
finally 區塊關閉,避免洩漏。ExcelView,並設定 response.setContentType("application/vnd.ms-excel")。