WEB應用中報表打印的完成
發表時間:2023-08-21 來源:明輝站整理相關軟件相關文章人氣:
[摘要]隨著世界范圍內Internet環境的形成,全球正進入一個以網絡為中心的計算時代。Web模型是在傳統的C/S模型的基礎上發展起來的一種新的Browser/Server計算模式。Browser/Serv...
隨著世界范圍內Internet環境的形成,全球正進入一個以網絡為中心的計算時代。Web模型是在傳統的C/S模型的基礎上發展起來的一種新的Browser/Server計算模式。Browser/Server模型簡化了C/S中的客戶端,客戶端只需裝上操作系統、網絡協議軟件及瀏覽器;而服務器端則集中了所有的應用邏輯,開發、維護等幾乎所有工作也都集中在服務器端。這時的客戶機被稱為瘦客戶機,服務器被稱為肥服務器。而WEB應用中的客戶端的報表打印則沒有C/S模型那么容易實現,如何在不使用ActiveX控件的情況下,實現打印字體、字體顏色、表格寬度、打印紙型等的設置。下面就以一個小例子來說明。
一、 創建數據庫
用 ACCESS創建一個名為user.mdb的數據庫,然后建一張名為user的表,表結構如下:
字段名稱 數據類型
username 文本
name 文本
sex 文本
二、 在asp中的實現
創建一個名為aspreport.asp的文件,其源代碼如下:
<%
'等到文本緩沖完才顯示
response.buffer = true
dim accessdb, cn, rs, sql
'數據庫名
accessdb="user.mdb"
'連接數據庫
cn="DRIVER={Microsoft Access Driver (*.mdb)};"
cn=cn & "DBQ=" & server.mappath(accessdb)
'創建記錄集
Set rs = Server.CreateObject("ADODB.Recordset")
'查詢語句
sql = "select * from user "
'開始查詢
rs.Open sql, cn
%>
<%
'告訴瀏覽器用word來顯示文檔內容
Response.ContentType = "application/msword"
'文檔設定
response.AddHeader "content-disposition", "inline; filename=report.doc"
%>
<html>
<head>
<title>報表</title>
</head>
<body bgcolor="#FFFFFF">
<center><h1>報表</h1></center>
<table border=1 cellspacing=0 cellpadding=0 bordercolor=#000000 align=center>
<tr>
<td>用戶名</td>
<td>真實姓名</td>
<td>性別</td>
</tr>
<%
'移到第一個記錄
rs.movefirst
do while not rs.eof
%>
<tr>
<td><%= rs("username") %></td>
<td><%= rs("name") %></td>
<td><%= rs("sex") %></td>
</tr>
<%
'移到下一個記錄
rs.movenext
loop %>
<%
'關閉記錄集
rs.close
set rs=nothing
response.flush
response.end
%>
</table>
</body>
</html>
把上面的report.asp文件和user.mdb數據庫放在同一目錄下,再用iis或pws把他們所在的目錄發布,打開瀏覽器,只要客戶端機子上有裝word,就會自動調用word以內嵌方式在瀏覽器上顯示,此時完全可以像使用word一樣來調整和打印。
三、 在jsp中的實現
創建一個名為jspreport.jsp的文件,其源代碼如下:
<%@ page contentType="application/msword;charset=gb2312" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>報表</title>
</head>
<body bgcolor="#FFFFFF">
<center><h1>報表</h1></center>
<table border=1 cellspacing=0 cellpadding=0 bordercolor=#000000 align=center>
<tr>
<td>用戶名</td>
<td>真實姓名</td>
<td>性別</td>
</tr>
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:user";
//連接user數據庫
Connection con=DriverManager.getConnection (url, "", "");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from user ");
//查詢user表
while(rs.next()){
%>
<tr>
<td><%= rs.getString("username") %></td>
<td><%= rs.getString("name") %></td>
<td><%= rs.getString("sex") %></td>
</tr>
<%
}
%>
<%
rs.close();
stmt.close();
con.close();
%>
</table>
jsp的服務器以TOMCAT為例,把上面的jspreport.jsp和user.mdb放在TOMCAT的root目錄下。在控制面板的ODBC中建立相應的DSN,類型mdb數據庫,數據源名為user。啟動TOMCAT,輸入相應的url,就可以看到和以上面asp一樣的效果。
以上只是一個簡單的例子,在作報表時,可以先用word設計好,然后另存為網頁,再利用此網頁改編成相應的腳本,就可以達到較好的效果。此方法有一個限制就是客戶端要有word軟件,但是會比使用ActiveX控件安全和方便,而且服務器端使用的平臺與WebServer是可以比較靈活的,特別適用于基于web的OA系統。