亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

asp生成excel報表

2019-11-17 04:28:36
字體:
來源:轉載
供稿:網友

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("scrfilePos=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報表的生成與打印的例子,在實際當中已經得到了良好的應用。事實也證明,這個例子的代碼雖然不難寫,但一定要注意系統的配置,這也是無數次失敗后得出的經驗。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美xxxx做受欧美| 亚洲精品国产品国语在线| 操人视频在线观看欧美| 日韩极品精品视频免费观看| 在线看日韩欧美| 精品国产91乱高清在线观看| 久久99热精品这里久久精品| 欧美日韩中文字幕日韩欧美| 97视频在线观看视频免费视频| 日韩美女免费观看| 欧美福利视频网站| 国产欧美日韩中文字幕在线| 亚洲欧美日韩一区二区三区在线| 亚洲精品美女在线| 欧美在线视频导航| 91久久久久久| 91网在线免费观看| 亚洲一区二区免费在线| 亚洲国产精品人人爽夜夜爽| 欧美大尺度电影在线观看| 国产精品久久久久福利| 人人爽久久涩噜噜噜网站| 亚洲欧美日韩精品久久| 国产丝袜一区视频在线观看| 亚洲精品动漫100p| 色黄久久久久久| 91久久久久久| 中文字幕不卡在线视频极品| 91精品国产综合久久香蕉| 青青草原成人在线视频| 日韩女在线观看| 久久精品国产96久久久香蕉| 亚洲一区二区日本| 国产精品国产亚洲伊人久久| 日日摸夜夜添一区| 精品久久久久久久久久国产| 中文字幕日韩综合av| 欧美大人香蕉在线| 国产精品十八以下禁看| 精品亚洲夜色av98在线观看| 欧美性猛交xxxx黑人猛交| 久久久久久中文| 国产在线精品成人一区二区三区| 91高清视频在线免费观看| 亚洲国产精品久久久久| 亚洲成色777777女色窝| www.国产精品一二区| 亚洲在线免费观看| 日韩视频精品在线| 国产一区二区黑人欧美xxxx| 亚洲国产欧美自拍| 日韩电影免费在线观看| 中文字幕欧美亚洲| 精品久久久免费| 在线看欧美日韩| 福利视频导航一区| 成人性教育视频在线观看| 成人乱人伦精品视频在线观看| 91久久久久久久| 亚洲精品久久久久久下一站| 57pao成人国产永久免费| 亚洲欧洲一区二区三区久久| 亚洲欧洲国产伦综合| 国产成人精品久久| 日韩中文字在线| 欧美亚洲另类激情另类| 亚洲男人天天操| 国产精品久久久久久av福利| 中文字幕亚洲激情| 欧美黑人xxxⅹ高潮交| 亚洲丝袜av一区| 91av在线免费观看| 亚洲人成亚洲人成在线观看| 亚洲精品国产免费| 亚洲自拍偷拍福利| 欧美激情图片区| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲日韩第一页| 日韩黄色av网站| 亚洲欧洲美洲在线综合| 亚洲精品中文字| 中文字幕亚洲欧美在线| 成人激情av在线| 欧美国产激情18| 亲爱的老师9免费观看全集电视剧| www.99久久热国产日韩欧美.com| 欧美视频精品一区| 亚洲国产欧美一区| 黑人巨大精品欧美一区免费视频| 亚洲xxxxx电影| 国产成人精品一区二区三区| 日本亚洲欧美三级| 久久久久久久久久国产| 久久大大胆人体| 永久免费精品影视网站| 亚洲国产成人精品久久| 久99久在线视频| 日本一区二区三区在线播放| 国产精品午夜国产小视频| 国产欧美日韩中文| 日韩性xxxx爱| 最近2019年中文视频免费在线观看| 亲爱的老师9免费观看全集电视剧| 欧美成人在线网站| 成人看片人aa| 国产热re99久久6国产精品| 欧美在线一区二区三区四| 亚洲日韩欧美视频一区| 日韩欧美黄色动漫| 国产精品亚洲精品| 国产一区二区三区精品久久久| 日韩视频免费大全中文字幕| 国产精品国产三级国产专播精品人| 黄色成人av在线| 欧美在线观看网址综合| 亚洲欧美精品在线| 国产精品黄页免费高清在线观看| 欧美成人免费全部观看天天性色| 欧美丝袜第一区| 欧美极品美女电影一区| 92看片淫黄大片欧美看国产片| 日韩中文字幕免费| 欧美精品成人在线| 正在播放亚洲1区| 国产精品第三页| 亚洲精品福利免费在线观看| 日韩中文av在线| 日本精品视频在线观看| 欧美黑人巨大xxx极品| 在线观看欧美日韩| 久久免费视频在线观看| 亚洲天堂免费视频| 欧美激情一区二区久久久| 国产精品扒开腿做爽爽爽男男| 欧美激情视频网| 日韩精品免费在线| 2021久久精品国产99国产精品| 国产一区二区三区在线| 最近中文字幕2019免费| 国产午夜精品麻豆| 久久这里只有精品视频首页| 日韩av电影免费观看高清| 欧美性受xxxx白人性爽| 91网站在线免费观看| 人人澡人人澡人人看欧美| 成人免费视频在线观看超级碰| 亚洲成人动漫在线播放| 国产精选久久久久久| 国产精品久久久久免费a∨| 国产成人精品最新| 欧美性猛交xxxx乱大交蜜桃| 欧美日在线观看| 亚洲欧洲第一视频| 136fldh精品导航福利| 日韩电影中文字幕在线观看| 欧美裸体xxxx极品少妇软件| 久久综合久中文字幕青草| 在线一区二区日韩| 国产欧美日韩丝袜精品一区| 最新国产精品拍自在线播放| 韩国精品久久久999| 一区二区国产精品视频| 在线播放国产一区中文字幕剧情欧美| 久久久久日韩精品久久久男男|