除了“讀取Excel數據形成Html表格”的技術外,你可能有興趣想了解怎樣用程序實現電子數據表和名字范圍的下拉菜單列表。
除了單元格的內容,用ADO還能知道更多的信息---在上面,已經討論了用它得到字段名的列表。
調用OpenSchema方法,可以得到當前打開數據庫(同樣適用於電子數據簿)的特殊記錄集,在這裡討論的例程中,是取回了當前電子數據簿的電子數據表和名字范圍。在數據庫的操作中,通過傳遞給ADO一個adSchemaTablesas命令參數,就可以得到所有表的信息。
Set oSchemaRs = oConn.OpenSchema(adSchemaTables)
上述調用將返回一個記錄集信息,對於文件TheWorkbook.xls,結果是:
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
和記錄集相比較,電子數據工作簿中的電子數據表(worksheets)被當作系統表,名字范圍被當作通常表。通常情況下,無名范圍(可以使用!)不被記錄集報告。
掌握了這些信息,創建字段下拉菜單就成了分離兩個表類型和使用合適的標記的工作了。比如,可以執行下面的Html/ASP代碼段來創建工作表列表的下拉菜單:
< 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代碼中可能還復雜一些,因為要處理上一個選項的顯示,同時要使用客戶端的JavaScript腳本檢查輸入的合法性。