在WEB應用中報表列印的實現

來源:互聯網
上載者:User
web|報表列印 WEB應用中報表列印的實現

  隨著世界範圍內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系統。



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。