明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

asp完成在web中顯示電子表格數(shù)據(jù)(一)顯示數(shù)據(jù)表格的應(yīng)

[摘要]在用ASP語言開發(fā)的Web數(shù)據(jù)庫(kù)應(yīng)用程序中,ADO (ActiveX Data Objects) 已經(jīng)成為非常流行的工具,而且對(duì)于真正的關(guān)系型數(shù)據(jù)庫(kù),比如Oracle、SQL Server,它都不會(huì)有局限性。ADO能夠存取多種不同的數(shù)據(jù)格式,MS Excel電子數(shù)據(jù)表格就是其中之一。 關(guān)于這個(gè)應(yīng)...

在用ASP語言開發(fā)的Web數(shù)據(jù)庫(kù)應(yīng)用程序中,ADO (ActiveX Data Objects) 已經(jīng)成為非常流行的工具,而且對(duì)于真正的關(guān)系型數(shù)據(jù)庫(kù),比如Oracle、SQL Server,它都不會(huì)有局限性。ADO能夠存取多種不同的數(shù)據(jù)格式,MS Excel電子數(shù)據(jù)表格就是其中之一。

關(guān)于這個(gè)應(yīng)用

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

執(zhí)行ReadXl.asp頁(yè)面,將顯示出可用的電子數(shù)據(jù)表文件列表。選擇好一個(gè)文件,并提交表單后,你將會(huì)看到:

一個(gè)下拉菜單,其中是工作表名稱
一個(gè)下拉菜單,其中是命名的范圍
一個(gè)單元格范圍輸入框
第一個(gè)工作表的全部?jī)?nèi)容


可以選擇工作簿文件中的另外一個(gè)工作表,或者輸入符合Excel格式的單元格范圍數(shù)值,比如:D20:E21 或者 Sheet3!F12:J22。注意:在ADO和ODBC驅(qū)動(dòng)程序中,要用$符合替換分界符號(hào)!。

實(shí)現(xiàn)步驟

現(xiàn)在對(duì)這個(gè)應(yīng)用程序已經(jīng)有了初步的認(rèn)識(shí),下面開始討論ASP代碼,看看如何讀取電子數(shù)據(jù)表的數(shù)據(jù),如何找到電子數(shù)據(jù)簿
(workbook)文件中可用的電子數(shù)據(jù)表(worksheet)和范圍,并看看實(shí)現(xiàn)文件列表選擇的技術(shù)。這里假設(shè)你已經(jīng)熟悉了編寫HTML表單的技術(shù),所以對(duì)此不做詳細(xì)介紹。

基本條件

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

實(shí)現(xiàn)“文件列表選擇”使用到了內(nèi)建的VBScript腳本對(duì)象,相關(guān)文檔可以查看http://YourServer/IisHelp/vbscript/htm/vbstoc.htm,如果想查看最新的文檔,請(qǐng)?jiān)L問http://msdn.microsoft.com/scripting
(版本5)。當(dāng)然,在服務(wù)器端和客戶端,你都不需要安裝MS Excel。

讀取電子數(shù)據(jù)表(Worksheet)數(shù)據(jù)

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

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 >

執(zhí)行下面的步驟,從數(shù)據(jù)庫(kù)表中讀取數(shù)據(jù)并顯示:

連接數(shù)據(jù)庫(kù)(同樣:打開數(shù)據(jù)簿文件)
讀取記錄集recordset(同樣:讀取一定范圍的單元格)
循環(huán)每一個(gè)記錄(同樣:每一行),經(jīng)過格式化,顯示
建立ADO連接

在連接數(shù)據(jù)庫(kù)或者打開文件前,需要了解一些信息。其中只要是設(shè)置名叫DSN的ODBC驅(qū)動(dòng),但為每一個(gè)數(shù)據(jù)表都建立這樣的ODBC驅(qū)動(dòng),是非常麻煩的,因?yàn)檫@需要在服務(wù)器的控制臺(tái)上通過“控制面板/ODBC設(shè)置”手工完成。

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

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連接信息,請(qǐng)打開Windows或者NT System目錄下的幫助文件Odbcjet.hlp。

讀取記錄集

連接上電子數(shù)據(jù)簿文件后,讀取一定范圍的單元格數(shù)據(jù)就很簡(jiǎn)單了。盡管不是必須的,但還是建議:用符合“[” 和 “]”包含住單元格的范圍定義。只所以這么做,是以防在數(shù)據(jù)庫(kù)的操作中產(chǎn)生非法的符合。

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

執(zhí)行上面的語句,將返回記錄集對(duì)象,其中包括范圍內(nèi)單元格的所有可用信息, 記錄集的數(shù)值和描述數(shù)據(jù)的元數(shù)據(jù)。
(出處:熱點(diǎn)網(wǎng)絡(luò))