除了“讀取Excel數(shù)據(jù)形成HTML表格”的技術(shù)外,你可能有興趣想了解怎樣用程序?qū)崿F(xiàn)電子數(shù)據(jù)表和名字范圍的下拉菜單列表。
除了單元格的內(nèi)容,用ADO還能知道更多的信息---在上面,已經(jīng)討論了用它得到字段名的列表。
調(diào)用OpenSchema方法,可以得到當(dāng)前打開數(shù)據(jù)庫(同樣適用于電子數(shù)據(jù)簿)的特殊記錄集,在這里討論的例程中,是取回了當(dāng)前電子數(shù)據(jù)簿的電子數(shù)據(jù)表和名字范圍。在數(shù)據(jù)庫的操作中,通過傳遞給ADO一個adSchemaTablesas命令參數(shù),就可以得到所有表的信息。
Set oSchemaRs = oConn.OpenSchema(adSchemaTables)
上述調(diào)用將返回一個記錄集信息,對于文件TheWorkbook.xls,結(jié)果是:
TABLE_NAME TABLE_TYPE Employees$ SYSTEM TABLE ListOfProducts$ SYSTEM TABLE Suppliers$ SYSTEM TABLE A_Duplicate_Name TABLE Alphabetical_List_of_Products TABLE Employees TABLE ListOfProducts$A_Duplicate_Name TABLE Product_Totals TABLE
和記錄集相比較,電子數(shù)據(jù)工作簿中的電子數(shù)據(jù)表(worksheets)被當(dāng)作系統(tǒng)表,名字范圍被當(dāng)作通常表。通常情況下,無名范圍(可以使用!)不被記錄集報告。
掌握了這些信息,創(chuàng)建字段下拉菜單就成了分離兩個表類型和使用合適的標(biāo)記的工作了。比如,可以執(zhí)行下面的HTML/ASP代碼段來創(chuàng)建工作表列表的下拉菜單:
< select name="XlSheet" > < % vOptions = "< option >< /option >" Do While Not oSchemaRs.EOF If oSchemaRs("TABLE_TYPE") = "SYSTEM TABLE" Then vOptions = vOptions & "< option >" & _ Server.HtmlEncode(oSchemaRs("TABLE_NAME")) & _ "< /option > End If oSchemaRs.MoveNext Loop Response.Write vOptions % > < /select > 實際的ReadX1.asp代碼中可能還復(fù)雜一些,因為要處理上一個選項的顯示,同時要使用客戶端的JavaScript腳本檢查輸入的合法性。 (出處:熱點網(wǎng)絡(luò))
|