精品久久看,欧美成人久久一级c片免费,日本加勒比在线精品视频,国产一区二区三区免费大片天美,国产成人精品999在线,97理论三级九七午夜在线观看

當前位置:首頁文章首頁 IT學院 IT技術

利用asp生成excel報表與打印的實例學習

作者:  來源:  發布時間:2011-6-2 9:30:41  點擊:

這篇文章主要跟大家介紹的是關于如何利用asp生成excel報表,希望能給大家派上用場。

1. 前言
報表打印通常是管理信息系統中的一個重要模塊,而Excel憑借它功能強大、應用靈活、通用性強等的優勢在報表打印中獲得了廣泛的應用。
最初的管理信息系統基本上是采用客戶機/服務器(C/S)模式開發的,但隨著WWW的廣泛應用,目前的管理信息系統已經逐漸開始從C/S模式向瀏覽器/服務器(B/S)模式轉變。B/S模式具有傳統C/S模式所不及的很多特點,如更加開放、與軟硬件無關、應用擴充和系統維護升級方便等等,目前已成為企業網上首選的計算模式,原先在C/S下的很多軟件都開始移植到B/S模式下。由于B/S模式的特殊性,在C/S下相對較易實現的Excel報表打印功能在B/S下卻成為一個難點。本文根據在實際的項目中總結的經驗,以ASP為例,給出了一個較好的通用方法。

2. 功能實現
為了說明問題,這里舉一個例子。系統平臺是Windows 2000+SQL Server 2000+IIS 5.0+ASP 3,報表采用的是Excel,要求按照給定的報表格式生成圖書銷售統計的報表,并能夠打印。

2.1 Excel報表模板的制作
首先根據給定的報表格式,制作一個Excel模板(就是要打印的報表的表格),當然其中需要從數據庫中動態統計生成的數據留著空白。這個報表先在Excel中畫好,然后保存為模板,存放在起來,這里為\test\book1.xlt。

2.2 Excel報表的生成與打印
這里采用了Excel的Application組件,該組件在安裝Excel時安裝到系統中。我們的操作也都是針對該組件。
(1) 建立Excel.Application對象
set objExcel=CreateObject("Excel.Application")

(2) 打開Excel模板
objExcel.Workbooks.Open(server.mappath("\test")&"\book1.xlt") '打開Excel模板
objExcel.Sheets(1).select '選中工作頁
set sheetActive=objExcel.ActiveWorkbook.ActiveSheet

(3) Excel的常規添加操作
例如sheetActive.range("g4").value=date() ‘這里添加的是時間,當然也可以是你指定的任何數據

(4) Excel中添加數據庫中的紀錄
這里假設已有一個數據集adoRset,存放由Sql操作生成的統計數據。
num=7 ‘從Excel的第七行開始
do until adoRset.EOF ‘循環直至數據集中的數據寫完
strRange="d"&num&":f"&num ‘設定要填寫內容的單元區域
sheetActive.range(strRange).font.size=10 ‘設定字體大小
sheetActive.range(strRange).WrapText=false ‘設定文字回卷
sheetActive.range(strRange).ShrinkToFit=true ‘設定是否自動適應表格單元大小
sheetActive.range(strRange).value=array(adoRset("bookid"),adoRset("bookname"),adoRset("author")) ‘把數據集中的數據填寫到相應的單元中
num=num+1
adoRset.MoveNext
loop

(5) Excel臨時報表文件的保存及處理
實際運行中應該注意每次一個用戶進行報表打印時都采用一個臨時的Excel文件,而不是硬性規定文件名,因為如果用固定的文件名的話,只有第一次生成是成功的,后面的操作都會因為已存在同名文件而導致失敗。所以我們需要每次都產生一個臨時的而且不重復的文件名,這里可以采用自定義的getTemporaryFile()函數由來生成,然后存放在變量filename中,用變量filepos表示這些臨時文件的路徑。
此外如果這些臨時文件不處理的話久而久之會成為文件垃圾,因此在每個用戶提交Excel報表打印請求時要先刪除臨時目錄下所有原先產生的臨時打印文件。
臨時文件的處理主要代碼如下:
function getTemporaryFile(myFileSystem)
dim tempFile,dotPos
tempFile=myFileSystem.getTempName
dotPos=instr(1,tempFile,".")
getTemporaryFile=mid(tempFile,1,dotPos)&"xls"
end function
set myFs=createObject("scripting.FileSystemObject")
filePos=server.mappath("\test") & "\tmp\" '要存放打印臨時文件的臨時目錄
fileName=getTemporaryFile(myFs) '取得一個臨時文件名
myFs.DeleteFile filePos&"*.xls" '刪除該目錄下所有原先產生的臨時打印文件
set myFs=nothing
Excel臨時文件的保存代碼為:
objExcel.ActiveWorkbook.saveas filePos&filename

(6) 退出Excel應用
objExcel.quit
set objExcel=Nothing

(7) Excel報表的打印
前面的步驟已經生成了Excel報表,下一步進行打印,采用的策略可以有兩種:
方案一:提供上面生成的Excel報表臨時文件鏈接給用戶,用戶可以直接點擊在瀏覽器中打開Excel報表并通過瀏覽器的打印功能進行打印,也可以點擊右鍵然后另存到本地后再作打印等相關處理。

方案二:生成Excel報表后直接在客戶端加載到瀏覽器,當然在沒有完全加載時應該提示“正在加載,請等待”等字樣。

2.3 系統配置與注意事項
雖然以上代碼很簡單,但實際應用不當經常會出現錯誤,所以下面要講到的系統配置和注意事項非常關鍵。
(1) 千萬要保證以上代碼輸入的正確性,否則一旦運行錯誤,Excel對象會滯留內存,難以消除,導致下一次調用時速度狂慢,并產生內存不可讀寫的Windows錯誤。這時的解決方法就是注銷當前用戶,如果還不行,就只能Reset了。

(2) 一定要設置好負責打印功能的asp文件的權限。方法是:在IIS管理中,選擇該asp文件,右鍵然后選“屬性”/“文件安全性”/"匿名訪問和驗證控制“,在這里IIS默認是匿名訪問,應該選擇驗證訪問(這里基本驗證和集成Windows驗證兩種方式均可,但前者不夠安全),這一點無比重要,否則應用當中會出錯的。

(3) 有的時候報表分為多頁,而且我們希望每一頁有相同的表頭,要求表頭每頁都自動打印,可以在Excel模板中進行設置。方法如下:選擇菜單"文件"/"頁面設置"/"工作表",然后在"頂端標題行"輸入你表頭的行數(如:表頭為1-3行即填入:$1:$3)。

3.總結
以上我們給出了一個采用ASP寫的在B/S模式下實現EXCEL報表的生成與打印的例子,在實際當中已經得到了良好的應用。事實也證明,這個例子的代碼雖然不難寫,但一定要注意系統的配置,這也是無數次失敗后得出的經驗。

文章評論

軟件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
主站蜘蛛池模板: 精品无码一区在线观看 | 婷婷色在线视频 | 成人二区 | 久久国内免费视频 | 国产一区二区视频免费 | 四虎永久影院永久影库 | 99re视频在线观看 | 国产精品2020观看久久 | 久久精品免费观看视频 | 999福利视频 | 青青久久精品 | 天天久久狠狠色综合 | 非会员体验60秒试看福利区 | 色在线视频网站 | 毛片一级免费 | 国产美女在线免费观看 | 欧美性生活网站 | 国产门事件在线 | 国产成人精品电影 | 国产日韩欧美视频在线 | 久久青草免费视频 | 91精品国产9l久久久久 | 激情综合五月天 | 国产亚洲综合色就色 | 四虎网站在线观看 | 国产精品高清视亚洲一区二区 | 欧美一级高清视频在线播放 | 狠狠色欧美亚洲狠狠色www | 乱码精品一区二区三区 | 精品国产欧美一区二区三区成人 | 99精品视频一区在线视频免费观看 | 日日摸夜夜欧美一区二区 | 五月亚洲综合 | 久久精品国产福利国产琪琪 | 全亚洲最大的免费电视网 | 国产一国产a一级毛片 | 丁香激情小说 | 秋霞午夜鲁丝片午夜精品久 | 成 人 黄 色 视频播放16 | 日韩亚洲综合精品国产 | 久青草国产手机在线视频 |