asp操作excel大全

1.ASP對Excel的基本操作
(1) 建立Excel對象
創建Excel對象可以通過下面的代碼來實現:
<%
set objExcelApp = CreateObject("Excel.Application")
objExcelApp.DisplayAlerts = false '不顯示警告
objExcelApp.Application = false '不顯示界面
%>
(2) 新建Excel文件
新建Excel文件可以通過以下代碼來實現:
<%
objExcelApp.WorkBooks.add
set objExcelBook = objExcelApp.ActiveWorkBook
set objExcelSheets = objExcelBook.Worksheets
set objExcelSheet = objExcelBook.Sheets(1)
%>
(3) 讀取已有的Excel文件
讀取已有的Excel文件可以通過下面的代碼來實現
<%
strAddr = Server.MapPath(".")
objExcelApp.WorkBooks.Open(strAddr & "TempletTable.xls")
set objExcelBook = objExcelApp.ActiveWorkBook
set objExcelSheets = objExcelBook.Worksheets
set objExcelSheet = objExcelBook.WorkSheets(1)
%>
(4) 另存Excel文件
另存Excel文件可以通過以下代碼來實現
<%
objExcelBook.SaveAs strAddr & "templateTables.xls"
%>
(5) 保存Excel文件
保存Excel文件可以通過以下代碼來實現:
<%
objExcelBook.Save
%>
(6) 退出Excel操作
<%
objExcelApp.Quit '一定要退出
set objExcelApp = nothing
%>

2 讀取Excel文件的實例
<%
set xlApp = server.CreateObject("Excel.Application")
strsource = server.MapPath("xl.xls")
set xlbook = xlApp.WorkBooks.Open(strsource)
set xlsheet = xlbook.Worksheets(1)

i = 1
response.write "<table>"

while xlsheet.cells(i,1) <> ""

response.write "<tr>"
response.write "<td>" & xlsheet.Cells(i,1) & "</td>"
response.write "<td>" & xlsheet.Cells(i,2) & "</td>"
response.write "<td>" & xlsheet.Cells(i,3) & "</td>"
response.write "<tr>"
i = i + 1

wend

response.write "</table>"
set xlsheet = nothing
set xlbook = nothing
xlApp.quit
'千萬記住要加這一句,否則每運行一次你的機器裏就增加一個Excel進程,而且無法釋放
'set xlApp = nothing 是不行的
%>
================================================================
3. 怎樣將數據從Excel導入到SQL Server中
(1)
<%
sub dataIntoSqlServer_ceritificate(strFileName,strSheetName,myConn)
'定義
dim myConnection
dim strName
dim rsXsl,rsSql
dim myConn_Xsl
dim cmd
dim i,j
dim maxId

strName = strFileName
set myConnection = Server.CreateObject("ADODB.Connection")
set rsXsl = Server.CreateObject("ADODB.Recordset")
set rsSql = Server.CreateObject("ADODB.Recordset")
set cmd = server.CreateObject("ADODB.Command")

cmd.ActiveConnection = myConn

myConn_Xsl = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strName & _
";Extended Properties=Excel 8.0"
'打開連接
myconnection.open myConn_Xsl
'打開表
str_Xsl = "select * from [" & strSheetName & "$]"
rsXsl.open str_Xsl,myconnection,1,1
j = 1
Do while not rsXsl.eof
'取出最大值
str_sql = "select Max(id) as maxId from exceltosql"
rsSql.open str_Sql,myConn,1,3
if Not rsSql.eof then
if not isNull(rsSql("maxId")) then
maxId=CLng(rsSql("maxId")) + 1
else
maxId = 1
end if
else
maxId = 1
end if
rsSql.close '//關閉對象
'加入數據庫
str_Sql = "insert into exceltosql values(" & maxId&",'"&rsXsl(1)&"','" & rsXsl(2)&"')"
cmd.CommandText = str_Sql
cmd.Excute()
''''''''''''''''''''''''''''''''''''''''''
j = j + 1
rsXsl.moveNext
loop

response.write "共導入 " & j_1 & " 條記錄.<br>"
response.write "<a href=# οnclick='self.close();'>關閉窗口</a>"
set rsXsl = nothing
set rsSql = nothing
set myconnection = nothing
set cmd = nothing
end sub


(2)
'調用方法
<%
file1 = "c:\excelexample.xls"
myconn = "DRIVER={SQL SERVER};SERVER=(local);uid=sa;pwd=sa;DATABASE=aspbook"
dataIntoSqlServer_ceritificate file1,"sheet1",myconn
%>
=============================================================================
4.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”,保證每次程序執行完不留下死進程。
==============================================================================
5.ASP讀EXCEL2000的文章!!

<%
'=====================ASP讀取EXCEL注事項===========================
'i)將Excel97或Excel2000生成的XLS文件(book)看成一個數據庫,其中的每一個工作表(sheet)看成數據庫表
'ii)ADO假設Excel中的第一行爲字段名.所以你定義的範圍中必須要包括第一行的內容
'iii)Excel中的行標題(即字段名)不能夠包含數字. Excel的驅動在遇到這種問題時就會出錯的。例如你的行標題名爲“F1”
'iiii)如果你的Excel電子表格中某一列同時包含了文本和數字的話,那麼Excel的ODBC驅動將不能夠正常, 處理這一行的數據類型,你必須要保證該列的數據類型一致

Dim Conn,Driver,DBPath,Rs
' 建立Connection對象
Set Conn = Server.CreateObject("ADODB.Connection")
Driver = "Driver={Microsoft Excel Driver (*.xls)};"
DBPath = "DBQ=" & Server.MapPath( "test.xls" )
'調用Open 方法打開數據庫
Conn.Open Driver & DBPath

'DSN連接方式
'Conn.Open "Dsn=test"
'注意 表名一定要以下邊這種格試 "[表名$]" 書寫
Sql="Select * From [Sheet1$] where 序號=0"
Set Rs=Conn.Execute(Sql)

IF Rs.Eof And Rs.Bof Then
Response.write "沒有找到您需要的數據!!"
Else

Do While Not Rs.EOF

Response.write Rs("姓名")

Rs.MoveNext
Loop
End IF

Rs.Close
Set Rs=nothing
Conn.Close
Set Conn=Nothing
'Response.Write "成功!"
%>
==============================================================================
6.ASP與電子表格EXCEL的交互操作


Here we go again with another sample for Excel, this time we will be using ASP to create a chart. You all
asked me for it, now here is the solution. Thanks again for all your nice comments :)

First we set the type of script

<%@ LANGUAGE="VBSCRIPT" %>

Make the object, and set the object to an Excelsheet

Dim MyExcelChart
Set MyExcelChart = CreateObject("Excel.Sheet")

Now lets write the rest of the script, see the comments

' show or dont show excel to user, TRUE or FALSE
MyExcelChart.Application.Visible = True

' populate the cells
MyExcelChart.ActiveSheet.Range("B2:k2").Value = Array
("Week1", "Week2", "Week3", "Week4", "Week5", "Week6", "Week7", "Week8", "Week9", "Week10")
MyExcelChart.ActiveSheet.Range("B3:k3").Value = Array
("67", "87", "5", "9", "7", "45", "45", "54", "54", "10")
MyExcelChart.ActiveSheet.Range("B4:k4").Value = Array
("10", "10", "8", "27", "33", "37", "50", "54", "10", "10")
MyExcelChart.ActiveSheet.Range("B5:k5").Value = Array
("23", "3", "86", "64", "60", "18", "5", "1", "36", "80")
MyExcelChart.ActiveSheet.Cells(3,1).Value="Internet Explorer"
MyExcelChart.ActiveSheet.Cells(4,1).Value="Netscape"
MyExcelChart.ActiveSheet.Cells(5,1).Value="Other"

' Select the contents that need to be in the chart
MyExcelChart.ActiveSheet.Range("b2:k5").Select

' Add the chart
MyExcelChart.Charts.Add
' Format the chart, set type of chart, shape of the bars, show title, get the data for the chart, show
datatable, show legend
MyExcelChart.activechart.ChartType = 97
MyExcelChart.activechart.BarShape =3
MyExcelChart.activechart.HasTitle = True
MyExcelChart.activechart.ChartTitle.Text = "Visitors log for each week shown in browsers percentage"
MyExcelChart.activechart.SetSourceData MyExcelChart.Sheets("Sheet1").Range("A1:k5"),1
MyExcelChart.activechart.Location 1
MyExcelChart.activechart.HasDataTable = True
MyExcelChart.activechart.DataTable.ShowLegendKey = True

' Save the the excelsheet to excelface
MyExcelChart.SaveAs "c:\chart.xls"
%>

Now lets complete the HTML tags.

<HTML>
<HEAD>
<TITLE>MyExcelChart</TITLE>
</HEAD>
<BODY>
</BODY>
</HTML>

This completes yer ASP page, look below for the complete code of myexcelchart.asp

<%@ LANGUAGE="VBSCRIPT" %>
<%
' Create Object
Set MyExcelChart = CreateObject("Excel.Sheet")

' show or dont show excel to user, TRUE or FALSE
MyExcelChart.Application.Visible = True

' populate the cells
MyExcelChart.ActiveSheet.Range("B2:k2").Value = Array
("Week1", "Week2", "Week3", "Week4", "Week5", "Week6", "Week7", "Week8", "Week9", "Week10")
MyExcelChart.ActiveSheet.Range("B3:k3").Value = Array
("67", "87", "5", "9", "7", "45", "45", "54", "54", "10")
MyExcelChart.ActiveSheet.Range("B4:k4").Value = Array
("10", "10", "8", "27", "33", "37", "50", "54", "10", "10")
MyExcelChart.ActiveSheet.Range("B5:k5").Value = Array
("23", "3", "86", "64", "60", "18", "5", "1", "36", "80")
MyExcelChart.ActiveSheet.Cells(3,1).Value="Internet Explorer"
MyExcelChart.ActiveSheet.Cells(4,1).Value="Netscape"
MyExcelChart.ActiveSheet.Cells(5,1).Value="Other"

' Select the contents that need to be in the chart
MyExcelChart.ActiveSheet.Range("b2:k5").Select

' Add the chart
MyExcelChart.Charts.Add
' Format the chart, set type of chart, shape of the bars, show title, get the data for the chart, show
datatable, show legend
MyExcelChart.activechart.ChartType = 97
MyExcelChart.activechart.BarShape =3
MyExcelChart.activechart.HasTitle = True
MyExcelChart.activechart.ChartTitle.Text = "Visitors log for each week shown in browsers percentage"
MyExcelChart.activechart.SetSourceData MyExcelChart.Sheets("Sheet1").Range("A1:k5"),1
MyExcelChart.activechart.Location 1
MyExcelChart.activechart.HasDataTable = True
MyExcelChart.activechart.DataTable.ShowLegendKey = True


' Save the the excelsheet to chart.xls
MyExcelChart.SaveAs "c:\chart.xls"


%>
<HTML>
<HEAD>
<TITLE>MyExcelChart</TITLE>
</HEAD>
<BODY>
</BODY>
</HTML>
==============================================================================
6.asp實現在web中顯示電子表格數據(一)
顯示數據表格的應用
   在用ASP語言開發的Web數據庫應用程序中,ADO (ActiveX Data Objects) 已經成爲非常流行的工具,而且對於真正的關係型數據庫,比如Oracle、SQL Server,它都不會有侷限性。ADO能夠存取多種不同的數據格式,MS Excel電子數據表格就是其中之一。

   關於這個應用

   可供下載的例程代碼中包括一個ASP文件ReadX1.asp,一個Excel文件TheWorkbook.xls。你也可以另外加入一些電子數據表文件。

   執行ReadXl.asp頁面,將顯示出可用的電子數據表文件列表。選擇好一個文件,並提交表單後,你將會看到:

一個下拉菜單,其中是工作表名稱
一個下拉菜單,其中是命名的範圍
一個單元格範圍輸入框
第一個工作表的全部內容
  

   可以選擇工作簿文件中的另外一個工作表,或者輸入符合Excel格式的單元格範圍數值,比如:D20:E21 或者 Sheet3!F12:J22。注意:在ADO和ODBC驅動程序中,要用$符合替換分界符號!。

   實現步驟

   現在對這個應用程序已經有了初步的認識,下面開始討論ASP代碼,看看如何讀取電子數據表的數據,如何找到電子數據簿
(workbook)文件中可用的電子數據表(worksheet)和範圍,並看看實現文件列表選擇的技術。這裏假設你已經熟悉了編寫HTML表單的技術,所以對此不做詳細介紹。

   基本條件

   下面將涉及到ADO對象、方法、屬性、收集和常量。在服務器上安裝IIS後,ADO就存在了,並且還有相關文檔,地址是http://YourServer/IisHelp/ado210.chm (版本2.1),或者http://YourServer/IisHelp/ado/docs/(老版本1.5)。如果需要升級ADO,可以從http://www.microsoft.com/Data/download.htm下載最新版本的MDAC工具包進行安裝。

   實現“文件列表選擇”使用到了內建的VBScript腳本對象,相關文檔可以查看http://YourServer/IisHelp/vbscript/htm/vbstoc.htm,如果想查看最新的文檔,請訪問http://msdn.microsoft.com/scripting
(版本5)。當然,在服務器端和客戶端,你都不需要安裝MS Excel。

   讀取電子數據表(Worksheet)數據

   通過ADO讀取電子數據表與讀取數據庫表的方法基本是一樣的。從下圖可以看到,電子數據表的行被稱作記錄Records,列被稱作字段Fields。電子數據表或者單元格的範圍可以被看成表Tables,並按照記錄集recordsets進行存取。

Spreadsheet Database HTML
< table >
< tr >
< th >NameA< /th >
< th >NameB< /th >
< th >NameC< /th >
< /tr >< tr >
< td >1< /td >
< td >2< /td >
< td >3< /td >
< /tr >< tr >
< td >11< /td >
< td >12< /td >
< td >13< /td >
< /tr >
< /table >

   執行下面的步驟,從數據庫表中讀取數據並顯示:

連接數據庫(同樣:打開數據簿文件)
讀取記錄集recordset(同樣:讀取一定範圍的單元格)
循環每一個記錄(同樣:每一行),經過格式化,顯示
   建立ADO連接

   在連接數據庫或者打開文件前,需要了解一些信息。其中只要是設置名叫DSN的ODBC驅動,但爲每一個數據表都建立這樣的ODBC驅動,是非常麻煩的,因爲這需要在服務器的控制檯上通過“控制面板/ODBC設置”手工完成。

   幸好,ASP提供了替代DSN的其他方法,它可以非常容易地在運行時建立連接。比如,字符串“DRIVER={Microsoft Excel Driver?*.xls)};ReadOnly=1;DBQ=C:dirfile.xls",表示了替代DSN打開文件c:dirfile.xls,因此通過這種方法僅僅需要提供給ASP程序一個文件名即可。執行下面的代碼,將從表單中讀取文件名,然後轉換爲全路徑,接着生成連接字符串,最後建立並打開這個連接。

vXlFile = Request("XlBook")
vXlFilePath = Server.MapPath(vXlFile) ' assumes file in current directory
vConnString = "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=" & _
vXlFilePath
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open vConnString
   如果想查看更多的非DSN連接信息,請打開Windows或者NT System目錄下的幫助文件Odbcjet.hlp。

   讀取記錄集

   連接上電子數據簿文件後,讀取一定範圍的單元格數據就很簡單了。儘管不是必須的,但還是建議:用符合“[” 和 “]”包含住單元格的範圍定義。只所以這麼做,是以防在數據庫的操作中產生非法的符合。

vXlRange = Request("XlRange")
Set oRs = oConn.Execute("[" & vXlRange & "]")

   執行上面的語句,將返回記錄集對象,其中包括範圍內單元格的所有可用信息, 記錄集的數值和描述數據的元數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章