ASP與Excel結合產生資料表和Chart圖的代碼

來源:互聯網
上載者:User

目錄
一、  環境配置
二、  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、  改變儲存格文字顏色
objExcelSheet.Cells(3,1).Font.Color=vbred
4、  儲存格四周畫線條
objExcelSheet.Cells(3.1).Borders(1).LineStyle =1
objExcelSheet.Cells(3.1).Borders(2).LineStyle =1
objExcelSheet.Cells(3.1).Borders(3).LineStyle =1
objExcelSheet.Cells(3.1).Borders(4).LineStyle =1
地區中間畫線條
objExcelSheet.Range(“A1:G7”).Borders(7).LineStyle =1
objExcelSheet.Range(“A1:G7”).Borders(8).LineStyle =1

8、  儲存格設定背景色
objExcelSheet.Cells(3.1).Interior.colorindex=17
9、  合併儲存格
objExcelSheet.Range(“A1:G7”).Merge
10、  設定左靠右對齊方式
2 left 3 middle 4 right
objExcelSheet.Range("A1").HorizontalAlignment = 2
11、  設定上下對齊
2 為置中
objExcelSheet.Range("A1")..VerticalAlignment = 2

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

補充兩點:

1、其他Excel具體操作可以通過錄製宏來解決。
2、伺服器端開啟SQL企業管理器也會產生問題。 複製代碼 代碼如下:<%
OnErrorResumeNextstrAddr=Server.MapPath(".")setobjExcelApp=CreateObject("Excel.Application")
objExcelApp.DisplayAlerts=false
objExcelApp.Application.Visible=false
objExcelApp.WorkBooks.Open(strAddr&"\Templet\Null.xls")
setobjExcelBook=objExcelApp.ActiveWorkBook
setobjExcelSheets=objExcelBook.Worksheets
setobjExcelSheet=objExcelBook.Sheets(1)objExcelSheet.Range("B2:k2").Value=Array("Week1","Week2","Week3","Week4","Week5","Week6","Week7",
"Week8","Week9","Week10")
objExcelSheet.Range("B3:k3").Value=Array("67","87","5","9","7","45","45","54","54","10")
objExcelSheet.Range("B4:k4").Value=Array("10","10","8","27","33","37","50","54","10","10")
objExcelSheet.Range("B5:k5").Value=Array("23","3","86","64","60","18","5","1","36","80")
objExcelSheet.Cells(3,1).Value="InternetExplorer"
objExcelSheet.Cells(4,1).Value="Netscape"
objExcelSheet.Cells(5,1).Value="Other"objExcelSheet.Range("b2:k5").Select

objExcelApp.Charts.Add
objExcelApp.ActiveChart.ChartType=97
objExcelApp.ActiveChart.BarShape=3
objExcelApp.ActiveChart.HasTitle=True
objExcelApp.ActiveChart.ChartTitle.Text=
"Visitorslogforeachweekshowninbrowserspercentage"
objExcelApp.ActiveChart.SetSourceDataobjExcelSheet.Range("A1:k5"),1
objExcelApp.ActiveChart.Location1
'objExcelApp.ActiveChart.HasDataTable=True
'objExcelApp.ActiveChart.DataTable.ShowLegendKey=TrueobjExcelBook.
SaveAsstrAddr&"\Temp\Excel.xls"objExcelApp.Quit
setobjExcelApp=Nothing
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<TITLE>NewDocument</TITLE>
<METANAME="Generator"CONTENT="MicrosoftFrontPage5.0">
<METANAME="Author"CONTENT="">
<METANAME="Keywords"CONTENT="">
<METANAME="Description"CONTENT="">
</HEAD>
<BODY>
</BODY>
</HTML>

相關文章

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.