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 = "="
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”,保證每次程序執行完不留下死進程。

=========================================

Access導出EXCEL文件的。

<!--#include file=connJob.asp-->
<!--#include file=Object.asp-->
<!--#include file=CheckUser.asp-->
<html>

<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<LINK href="face.css" type=text/css rel=stylesheet>
<title>導出Excel表</title>
</head>

<body class="BodyMain">
<%
if UserID="" then
call CloseConn()
Response.Redirect "Index.asp"
end if

if UserID>1 then
Call Main
else
Response.write NoView
end if

Sub Main
Dim ExcelSql
Dim rs
ExcelSql=request.form("ExcelSql")
Response.write ExcelSql
exit sub

On error resume next
Set rs=conn.execute(ExcelSql)

if err.Number<>0 then
Response.write err.Description & " " & aspButton("返回上一頁",1)
rs.close
set rs=nothing
exit sub
end if

if rs.eof then
Response.write "沒有記錄可導出! " & aspButton("返回上一頁",1)
rs.close
set rs=nothing
exit sub
end if

Dim App,Book,Shts,Sht
set App = CreateObject("Excel.Application")
App.DisplayAlerts = false 不顯示警告
App.Application.Visible = false 不顯示界面

添加Excel表
App.WorkBooks.add
set Book = App.ActiveWorkBook
set Shts = Book.Worksheets
set Sht = Book.Sheets(1)

Sht.Range("A1:O1").Value = Array("學號", "姓名", "系別", "專業", "月份", "是否暫緩", "ABC類型", "單位名", "單位城市", "聯繫電話","聯繫人","單位性質","崗位名稱","就業狀態","審覈")

Dim r 行數
r=2 從第二行開始寫
Dim DeferOctEmp,IsCheck
do while not rs.eof
If rs("DeferOctEmp") Then
DeferOctEmp="是"
else
DeferOctEmp="否"
end if
If rs("IsCheck")=3 then
IsCheck="系主任審覈"
elseif rs("IsCheck")>=4 then
IsCheck="就業指導中心審覈"
else
IsCheck="未審覈"
end if
Sht.Range("A"&r&":O"&r).Value=Array(cstr(rs("StudentID")), rs("StudentName"), rs("DepartmentName"), rs("SpecialtyName"), rs("CountMonth"), DeferOctEmp, rs("ABCsort"), rs("CompanyName"), rs("CityName"), rs("CompanyPhone"),rs("LinkName"),rs("CompanyType"),rs("JobAppellation"),rs("ObtainEmpType"),IsCheck)
rs.movenext
r=r+1
loop
rs.close
set rs=nothing
設置自動列寬
Sht.Range("A1:O"&(r-1)).Columns.AutoFit

保存Excel文件
Dim ExcelFile
ExcelFile="Excel/"&UserID&".xls"
Book.SaveAs Server.MapPath(ExcelFile)

if err.Number<>0 then
Response.write err.Description & " " & aspButton("返回上一頁",1)
App.Quit
set App = Nothing
exit sub
end if

Book.Save
App.Quit
set App = Nothing

Response.Redirect ExcelFile
End Sub

conn.close
set conn=nothing
%>
</body>

</html>

==========================================

Microsoft VBScript 運行時錯誤 錯誤 800a0046

沒有權限: CreateObject
====================================解決辦法:
解決方法:
我當時是在調用/"server.createObject(/"excel.application/")/"的時候發生的錯誤,到很多網站上查,包括微軟的方法也嘗試了,但是
不行。後來是這樣解決的:
開始->運行->dcomcnfg
找到/"Microsoft Excel 應用程序/"(這個名稱取決於你調用的Object是什麼),然後右鍵->Properties->security把三個權限都給everyone即可,其實第一個Launch & activate即可

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