web|建立|試算表|資料|顯示 除了“讀取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指令碼檢查輸入的合法性。