ASP對Excel的基本操作

目錄
一、  環境配置
二、  ASP對Excel的基本操作
三、  ASP操作Excel生成數據表
四、  ASP操作Excel生成Chart圖
五、  服務器端Excel文件瀏覽、下載、刪除方案
六、  附錄

正文
一、  環境配置
服務器端的環境配置從參考資料上看,微軟系列的配置應該都行,即:
1.Win9x+PWS+Office
2.Win2000 Professional+PWS+Office
3.Win2000 Server+IIS+Office
目前筆者測試成功的環境是後二者。Office的版本沒有特殊要求,考慮到客戶機配置的不確定性和下兼容特性,建議服務器端Office版本不要太高,以防止客戶機下載後無法正確顯示。
服務器端環境配置還有兩個偶然的發現是:
1.  筆者開發機器上原來裝有金山的WPS2002,結果Excel對象創建始終出現問題,卸載WPS2002後,錯誤消失。
2.  筆者開發ASP代碼喜歡用FrontPage,結果發現如果FrontPage打開(服務器端),對象創建出現不穩定現象,時而成功時而不成功。擴展考察後發現,Office系列的軟件如果在服務器端運行,則Excel對象的創建很難成功。
服務器端還必須要設置的一點是COM組件的操作權限。在命令行鍵入“DCOMCNFG”,則進入COM組件配置界面,選擇Microsoft Excel後點擊屬性按鈕,將三個單選項一律選擇自定義,編輯中將Everyone加入所有權限。保存完畢後重新啓動服務器。
客戶端的環境配置沒發現什麼特別講究的地方,只要裝有Office和IE即可,版本通用的好象都可以。

二、  ASP對Excel的基本操作
1、  建立Excel對象
set objExcelApp = CreateObject("Excel.Application")
objExcelApp.DisplayAlerts = false    不顯示警告
objExcelApp.Application.Visible = false    不顯示界面
2、  新建Excel文件
objExcelApp.WorkBooks.add
set objExcelBook = objExcelApp.ActiveWorkBook
set objExcelSheets = objExcelBook.Worksheets
set objExcelSheet = objExcelBook.Sheets(1)
3、  讀取已有Excel文件
strAddr = Server.MapPath(".")
objExcelApp.WorkBooks.Open(strAddr & "/Templet/Table.xls")
set objExcelBook = objExcelApp.ActiveWorkBook
set objExcelSheets = objExcelBook.Worksheets
set objExcelSheet = objExcelBook.Sheets(1)
4、  另存Excel文件
objExcelBook.SaveAs strAddr & "/Temp/Table.xls"
5、  保存Excel文件
objExcelBook.Save    (筆者測試時保存成功,頁面報錯。)
6、  退出Excel操作
objExcelApp.Quit  一定要退出
set objExcelApp = Nothing

三、  ASP操作Excel生成數據表
1、  在一個範圍內插入數據
objExcelSheet.Range("B3:k3").Value = Array("67", "87", "5", "9", "7", "45", "45", "54", "54", "10")
2、  在一個單元格內插入數據
objExcelSheet.Cells(3,1).Value="Internet Explorer"
3、  選中一個範圍
4、  單元格左邊畫粗線條
5、  單元格右邊畫粗線條
6、  單元格上邊畫粗線條
7、  單元格下邊畫粗線條
8、  單元格設定背景色
9、  合併單元格
10、  插入行
11、  插入列

四、  ASP操作Excel生成Chart圖
1、  創建Chart圖
objExcelApp.Charts.Add
2、  設定Chart圖種類
objExcelApp.ActiveChart.ChartType = 97
注:二維折線圖,4;二維餅圖,5;二維柱形圖,51
3、  設定Chart圖標題
objExcelApp.ActiveChart.HasTitle = True
objExcelApp.ActiveChart.ChartTitle.Text = "A test Chart"
4、  通過表格數據設定圖形
objExcelApp.ActiveChart.SetSourceData objExcelSheet.Range("A1:k5"),1
5、  直接設定圖形數據(推薦)
objExcelApp.ActiveChart.SeriesCollection.NewSeries
objExcelApp.ActiveChart.SeriesCollection(1).Name = "=""333"""
objExcelApp.ActiveChart.SeriesCollection(1).Values = "={1,4,5,6,2}"
6、  綁定Chart圖
objExcelApp.ActiveChart.Location 1
7、  顯示數據表
objExcelApp.ActiveChart.HasDataTable = True
8、  顯示圖例
objExcelApp.ActiveChart.DataTable.ShowLegendKey = True

五、  服務器端Excel文件瀏覽、下載、刪除方案
瀏覽的解決方法很多,“Location.href=”,“Navigate”,“Response.Redirect”都可以實現,建議用客戶端的方法,原因是給服務器更多的時間生成Excel文件。
下載的實現要麻煩一些。用網上現成的服務器端下載組件或自己定製開發一個組件是比較好的方案。另外一種方法是在客戶端操作Excel組件,由客戶端操作服務器端Excel文件另存至客戶端。這種方法要求客戶端開放不安全ActiveX控件的操作權限,考慮到通知每個客戶將服務器設置爲可信站點的麻煩程度建議還是用第一個方法比較省事。
刪除方案由三部分組成:
A:  同一用戶生成的Excel文件用同一個文件名,文件名可用用戶ID號或SessionID號等可確信不重複字符串組成。這樣新文件生成時自動覆蓋上一文件。
B:  在Global.asa文件中設置Session_onEnd事件激發時,刪除這個用戶的Excel暫存文件。
C:  在Global.asa文件中設置Application_onStart事件激發時,刪除暫存目錄下的所有文件。
注:建議目錄結構 /Src 代碼目錄 /Templet 模板目錄 /Temp 暫存目錄

六、  附錄
出錯時Excel出現的死進程出現是一件很頭疼的事情。在每個文件前加上“On Error Resume Next”將有助於改善這種情況,因爲它會不管文件是否產生錯誤都堅持執行到“Application.Quit”,保證每次程序執行完不留下死進程。

 

MS的OLEDB支持以數據庫方式讀取EXCEL中的數據,這樣可以方便的從excel中存取數據,但有一點需要注意,從excel中讀數據時,不能使用execute的方式讀,而必須使用open的方式去讀
例程:

dim ConnExcel,sql,RsExcel,ExcelFile

ExcelFile="BuyList.xls"
ConnExcel=ConnectToExcel(ExcelFile)

'注意 表名一定要以下邊這種格試 "[表名$]" 書寫
Sql="Select * From [Sheet1$]"
Set RsExcel = Server.CreateObject("ADODB.Recordset")
'ASP讀取excel數據時,要用open方法,不能用execute方式,用execute會出錯
RsExcel.open Sql,ConnExcel,1,3
IF RsExcel.Eof And RsExcel.Bof Then
Response.write "沒有找到您需要的數據!!"
Else

Do While Not RsExcel.EOF
Response.write RsExcel(0)
RsExcel.MoveNext
Loop
End IF

RsExcel.Close
Set RsExcel=nothing


Function ConnectToExcel(FileName)
Dim ConnName,ConnStr,Rs
' 建立Connection對象
Set ConnName = Server.CreateObject("ADODB.Connection")
' ConnStr = "Driver={Microsoft Excel Driver (*.xls)};DBQ="&Server.MapPath(FileName)
' ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source ="&Server.MapPath(FileName)&";Extended Properties=Excel 8.0"
ConnStr = "Data Source ="&Server.MapPath(FileName)&";Extended Properties=Excel 8.0"
response.Write(ConnStr)+"<br>"
'調用Open 方法打開數據庫
ConnName.Provider = "Microsoft.Jet.OLEDB.4.0 "
ConnName.ConnectionString = ConnStr
ConnName.Open
response.Write("errors:"&ConnName.errors.count&"<br>")
for i=0 to ConnName.errors.count - 1
response.Write(ConnName.errors(i).description+"<br>")
next
set ConnectToExcel = ConnName
Set ConnName=nothing
End Function 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章