您目前已離線,請等候您的網際網路重新連線

不支援您的瀏覽器

您必須更新瀏覽器,才能使用此網站。

更新至最新版本的 Internet Explorer

如何使用 ASP 從 ADO 查詢及更新 Excel 資料

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:195951
結論
本文將告訴您,如何查詢及更新中使用 ActiveX 資料物件 (ADO) 從動態伺服器網頁 (ASP) 頁面的 Excel 試算表的資訊。本文也將告訴您這種類型的應用程式相關聯的限制。

重要事項: 雖然 ASP/ADO 應用程式支援多重使用者存取,Excel 試算表並沒有。 因此,這種查詢和更新資訊的方法並不支援多位使用者並行存取。
其他相關資訊
若要存取在這個範例將 Excel 試算表中的資料,使用 [為 Excel 的 [Microsoft ODBC 驅動程式]。建立表格,藉由建立已命名的範圍,Excel 試算表內存取資料。

建立範例應用程式的步驟

  • 使用中 sheet1 下列資料建立 Excel 檔案 ADOtest.xls:

    column1column2column3
    rr15
    bb測試20
    ee運作方式25

    附註如果在 Excel 試算表中的某欄含有文字和數字,Excel ODBC 驅動程式無法正確地解譯資料行應該是哪一種資料型別。請確定欄中的所有儲存格都屬於相同的資料型別。如果資料行中的每個儲存格不是相同的型別或您有混合之間 「 文字 」 和 「 一般 」 類型,就可能發生下列三種錯誤:
    1. Microsoft OLE DB 提供者的 ODBC 驅動程式時發生錯誤 '80040e21'
      要求屬性不支援依此 ODBC 驅動程式。
    2. Microsoft OLE DB 提供者的 ODBC 驅動程式錯誤 80004005'
      查詢不是可更新的因為它包含做為 hopeful 鍵沒有可搜尋資料行。
    3. Microsoft OLE DB 提供者的 ODBC 驅動程式錯誤 80004005'
      基礎的查詢更新失敗。找不到要更新之資料列。
  • 在您的試算表中建立已命名的範圍,myRange1:

    1. 反白顯示您的資料所在的 [資料列和資料行] 區域。
    2. 在 [插入] 功能表上指向 [名稱],並按一下 [定義]。
    3. 輸入名稱 myRange1 的已命名的範圍名稱。
    4. 按一下 [確定]。
    已命名的範圍 myRange1 包含下列資料:

    column1column2column3
    rr15
    bb測試20
    ee運作方式25


    附註ADO 會假設 Excel 查詢中的第一列包含欄位標題。因此,已命名的範圍必須包含欄標題。 這是 DAO 從不同的行為。

    附註欄標題不能是數字。Excel 驅動程式無法解譯,並改,傳回儲存格參照。比方說 F1 」 的資料行標題會被錯譯。
  • 建立一個 ODBC 系統資料來源名稱 (DSN) 指向 ADOTest.xls 檔。
    1. [控制台] 中開啟 [ODBC 系統管理員。
    2. 在 [系統 DSN] 索引標籤上按一下 [新增]。
    3. 選取 [Microsoft Excel 驅動程式 (*.xls),然後按一下 [完成]。 如果此選項不存在,您需要從 Excel 安裝程式安裝的 Excel 的 Microsoft ODBC 驅動程式。
    4. 選擇資料來源名稱 ADOExcel。
    5. 請確定 [版本設定為正確版本的 Excel。
    6. 按一下 [選取活頁簿...],瀏覽到 [ADOTest.xls 檔案,然後按一下 [確定]。
    7. 按一下"選項 > > 」 按鈕,然後清除 「 唯讀 」] 核取方塊。
    8. 按一下 [確定],然後再按一次 [確定]。
  • 設定 ADOTest.xls 檔案的權限。
如果您動態伺服器網頁以匿名方式存取,您需要確定匿名帳戶 (IUSR_ <machinename>) 具有至少試算表的讀取/寫入 (RW) 存取。如果想從試算表中刪除資訊您要據以授與的權限。

如果您驗證您動態伺服器網頁存取,您必須確定所有使用者存取您的應用程式都有適當的權限。

附註如果您沒有在試算表上設定適當的權限,您收到錯誤訊息類似下列:

Microsoft OLE DB 提供者的 ODBC 驅動程式錯誤 80004005'

[Microsoft][ODBC Excel 驅動程式]Microsoft Jet 資料庫引擎無法開啟檔案 '(未知)'。只由另一位使用者已經開啟,或者您需要檢視其資料的權限。
  1. 建立新的 ASP 網頁,並貼上下列程式碼:
          <!-- Begin ASP Source Code -->      <%@ LANGUAGE="VBSCRIPT" %>      <%        Set objConn = Server.CreateObject("ADODB.Connection")        objConn.Open "ADOExcel"        Set objRS = Server.CreateObject("ADODB.Recordset")        objRS.ActiveConnection = objConn        objRS.CursorType = 3                    'Static cursor.        objRS.LockType = 2                      'Pessimistic Lock.        objRS.Source = "Select * from myRange1"        objRS.Open   %>   <br>   <%      Response.Write("Original Data")      'Printing out original spreadsheet headings and values.      'Note that the first recordset does not have a "value" property      'just a "name" property.  This will spit out the column headings.      Response.Write("<TABLE><TR>")      For X = 0 To objRS.Fields.Count - 1         Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")      Next      Response.Write("</TR>")      objRS.MoveFirst      While Not objRS.EOF         Response.Write("<TR>")         For X = 0 To objRS.Fields.Count - 1            Response.write("<TD>" & objRS.Fields.Item(X).Value)         Next         objRS.MoveNext         Response.Write("</TR>")      Wend      Response.Write("</TABLE>")      'The update is made here      objRS.MoveFirst      objRS.Fields(0).Value = "change"      objRS.Fields(1).Value = "look"      objRS.Fields(2).Value = "30"      objRS.Update      'Printing out spreadsheet headings and values after update.      Response.Write("<br>Data after the update")      Response.Write("<TABLE><TR>")      For X = 0 To objRS.Fields.Count - 1         Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")      Next      Response.Write("</TR>")      objRS.MoveFirst      While Not objRS.EOF         Response.Write("<TR>")         For X = 0 To objRS.Fields.Count - 1            Response.write("<TD>" & objRS.Fields.Item(X).Value)         Next         objRS.MoveNext         Response.Write("</TR>")      Wend      Response.Write("</TABLE>")      'ADO Object clean up.      objRS.Close      Set objRS = Nothing      objConn.Close      Set objConn = Nothing   %>   <!-- End ASP Source Code -->					
  2. 儲存並命名您動態伺服器網頁,然後在瀏覽器中檢視它。您會看到下列:
          Original Data:      column1    column2    column3      -----------------------------      rr         this       30      bb         test       20      tt         works      25      Data after the update:      column1    column2    column3      -----------------------------      change     look       30      bb         test       20      tt         works      25					
附註您已命名的範圍的第一列上,已執行更新之後標題)。
参考
如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
190195如何從 Excel 工作表以 DAO ExtractInformation

Warning: This article has been translated automatically

內容

文章識別碼:195951 - 最後檢閱時間:07/01/2004 20:48:45 - 修訂: 5.2

  • Microsoft ActiveX Data Objects 1.0
  • Microsoft ActiveX Data Objects 1.5
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1 Service Pack 2
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft Active Server Pages 4.0
  • Microsoft Data Access Components 2.5
  • kbmt kbcode kbhowto kbmdacnosweep KB195951 KbMtzh
意見反應
>