如何查询和更新 Excel 使用 ASP 来自 ADO 的数据

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 195951
概要
本文演示了如何查询和更新在从活动服务器页面 (ASP) 页中使用 ActiveX 数据对象 (ADO) Excel 电子表格中的信息。本文还介绍与这种类型的应用程序相关联的限制。

注意: 尽管 ASP/ADO 应用程序支持多用户访问,Excel 电子表格没有。 因此,这种查询和更新信息的方法不支持多用户并发访问。
更多信息
若要进行此示例的 Excel 电子表格中数据的 Excel 中使用 Microsoft ODBC 驱动程序。创建访问 Excel 电子表格中创建一个命名范围的数据的表。

创建示例应用程序的步骤

  • 创建包含下列数据在 sheet1 中的 Excel 文件 ADOtest.xls 执行以下操作:

    列 1列 2column3
    rr15
    bb测试20
    下一页工作原理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 包含以下数据:

    列 1列 2column3
    rr15
    bb测试20
    下一页工作原理25


    注意ADO 会假设在 Excel 查询中的第一行包含列标题。因此,命名范围必须包含列标题。 这是从 DAO 的不同行为。

    注意列标题不能是数字。Excel 驱动程序不能对其进行解释,并改,返回单元格引用。例如对于"f1"的列标题将被误解。
  • 创建一个 ODBC 系统数据源名称 (DSN) 指向 ADOTest.xls 文件。
    1. 从控件面板中打开 ODBC 管理器。
    2. 在系统 DSN 选项卡上单击添加。
    3. 选择 Microsoft Excel 驱动程序 (*.xls),然后单击完成。 如果不存在此选项,则需要安装用于 Excel 的 Microsoft ODBC 驱动程序,从 Excel 安装程序。
    4. 选择数据源名称 ADOExcel。
    5. 请确保该版本设置为正确的版本的 Excel。
    6. 单击"选择工作簿...",浏览到该 ADOTest.xls 文件,然后单击确定。
    7. 单击在"选项 >>"按钮,然后清除"只读"复选框。
    8. 单击确定,然后再次单击确定。
  • ADOTest.xls 文件上设置权限。
如果匿名访问您的活动服务器页面,则需要确保匿名帐户 (IUSR_ <machinename>) 至少拥有读/写 (读写) 访问电子表格。如果要从电子表格中删除信息则需要相应地授予的权限。

如果您活动服务器页面对访问进行身份验证,则需要确保访问您的应用程序的所有用户都有适当的权限。

注意如果不在电子表格上设置适当的权限,将得到一条错误消息类似于以下内容:

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

警告:本文已自动翻译

Властивості

Ідентифікатор статті: 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
Зворотний зв’язок