ExcelADO 演示如何使用 ADO 来读取和写入数据在 Excel 工作簿中

文章翻译 文章翻译
文章编号: 278973 - 查看本文应用于的产品
展开全部 | 关闭全部

概要

ExcelADO.exe 示例阐释了如何使用 ActiveX 数据对象 (ADO) 与 Microsoft Jet OLE DB 提供 4.0 程序读取和写入在 Microsoft Excel 工作簿中的数据。

更多信息

以下文件是可从 Microsoft 下载中心下载:
ExcelADO.exe
发布日期: 12,2000 年十二月

有关如何下载 Microsoft 支持文件的其他信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
119591如何从联机服务获得 Microsoft 支持文件
Microsoft 扫描此文件的病毒。Microsoft 使用该文件已过帐的日期上获得的最新病毒检测软件。该文件存储在安全性得到增强的服务器,这有助于防止未经授权的情况下对其进行更改文件上。

为什么使用 ADO?

使用 ADO 转移到的数据或从 Excel 工作簿中检索数据的 Excel 给您、 开发人员、 通过自动化的几个优点:
  • 性能。Microsoft Excel 是进程外 ActiveX 服务器。ADO 运行中进程,并将保存的代价高昂的进程外调用系统开销。
  • 可伸缩性。为 Web 的应用程序它并不总是希望自动化 Excel。ADO 将显示一个多可扩展的解决方案来处理工作簿中的数据。
ADO 可以使用受到严格限制,只能将原始数据传输到工作簿。您不能使用 ADO 的单元格应用格式或公式。但是,您可以将数据传送到的 pre-formatted 工作簿和格式进行维护。如果您需要在"条件"格式插入数据后,您可以完成此格式,使用自动化或宏的工作簿中。

jet OLE DB 提供程序特定的 Excel 工作簿的信息

Microsoft Jet 数据库引擎可用于可安装索引顺序访问方法 (ISAM) 驱动程序通过访问其他数据库文件格式如 Excel 的工作簿中的数据。若要打开,Microsoft Jet 4.0 OLE DB 提供程序支持的外部格式您连接的扩展属性中指定数据库类型。在 Jet OLE DB 提供程序支持下列数据库类型的 Microsoft Excel 工作簿:
  • Excel 3.0
  • Excel 4.0
  • Excel 5.0
  • Excel 8.0
: 使用 Excel 5.0 源数据库类型的 Microsoft Excel 5.0 和 7.0 (95) 工作簿和使用 Excel 8.0 源数据库类型 (97) 的 Microsoft Excel 8.0 和 9.0 (2000) 的工作簿。ExcelADO.exe 示例使用以 Excel 97 和 Excel 2000 格式的 Excel 工作簿。

下面的示例演示一个 ADO 连接到一个 Excel 97 (或 2000年) 工作簿:
Dim oConn As New ADODB.Connection
With oConn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .Properties("Extended Properties").Value = "Excel 8.0"
    .Open "C:\Book1.xls"
    '....
    .Close
End With
				
-或-
Dim oConn As New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=C:\Book1.xls;" & _
           "Extended Properties=""Excel 8.0;"""
oConn.Close
				
表命名约定

在 Excel 工作簿中有几种方法可以引用一个表 (或区域):
  • 使用工作表名称跟一个美元符号 (例如 [Sheet1 $] 或 [我的工作表 $])。在这种方式中被引用的工作簿表包含整个工作表中的使用范围
    oRS.Open "Select * from [Sheet1$]", oConn, adOpenStatic
    					
  • 具有已定义名称 (例如 [Table1]) 中使用整个范围
    oRS.Open "Select * from Table1", oConn, adOpenStatic
    					
  • 使用特定地址范围 (例如对于 [Sheet1 $ A1: B10])
    oRS.Open "Select * from [Sheet1$A1:B10]", oConn, adOpenStatic
    					
表标题

使用 Excel 的工作簿范围中第一行被认为是标题行 (或字段名) 默认情况下。如果第一个区域不包含标头,您可以指定 HDR = NO 在连接字符串中扩展属性中。如果第一行不包含标头,OLE DB 提供程序自动命名字段为您 (其中 F1 将表示第一个域,F2 将代表第二个字段等)。

数据类型

与不同的是一个传统的数据库没有 Excel 表中指定的列数据类型的直接方法。而是,OLE DB 提供程序扫描有限的数量的猜测字段数据类型列中的行。要扫描的八 (8) 行 ; 默认值的行数您可以更改要扫描通过您的连接字符串的扩展属性中指定一个一 (1) 至十六 (16) MAXSCANROWS 设置之间的值的行数。

文件包含的示例

ExcelADO.exe 文件包含一个 Visual Basic 标准 EXE 项目活动服务器页面 (ASP)、 Excel 97 和 Excel 2000 工作簿作为模板,和 Microsoft Access 2000 数据库的。包含的文件如下所示:

Visual Basic 标准 EXE 项目文件
  • ExcelADO.vbp
  • Form1.frm
  • Form1.frx
活动服务器页面
  • EmpData.asp
  • Orders.asp
Microsoft Excel 工作簿
  • OrdersTemplate.xls
  • EmpDataTemplate.xls
  • ProductsTemplate.xls
  • SourceData.xls
Microsoft Access 数据库
  • Data.mdb

如何使用示例

解压缩.exe 文件的文件夹的内容。

使用 Visual Basic 项目
  1. 在 Visual Basic 中打开 $ ExcelADO.vbp 文件。
  2. 项目 菜单上选择 引用,然后设置对 Microsoft ADO 分机 DDL 和 $ 安全 和 $ Microsoft ActiveX 数据对象库 的引用。此示例代码的工作原理与 ADO 2.5 和 ADO 2.6,因此选择适合于您的计算机的版本。
  3. 按 F5 键运行该程序。此时将显示一个窗体中的为演示。
  4. 单击 示例 1。 此示例创建一份 OrdersTemplate.xls。然后,使用 ADO 连接到该工作簿并打开 记录集 是一个已定义的区域,在工作簿中的表。该区域的名称是 Orders_Table。它使用 ADO AddNew / 更新 方法添加记录 (或行) 以在工作簿中定义的范围。完成行添加后会 ADO 连接 被关闭,并在 Excel 中显示工作簿。请按照下列步骤,若要执行此操作:
    1. 在 Excel 中 插入 菜单上选择 名称,然后选择 定义
    2. 在已定义名称的列表中,选择 Orders_Table。请注意,已定义的名称已增长以包括新添加的记录。已定义的名称,结合使用使用 Excel 的 OFFSET 功能来计算对添加到工作表中的数据的总计。
    3. 退出 Excel 并返回到 Visual Basic 应用程序。
  5. 单击 示例 2。 此示例创建一份 EmpDataTemplate.xls。它使用 ADO 连接到该工作簿,并使用 Execute 方法的 ADO 连接 (INSERT INTO 在 SQL 中) 的数据插入到工作簿。在定义的范围 (或表) 工作簿中添加数据。数据传输连接已关闭并且结果的工作簿会显示在 Excel 中。检查工作簿后,退出 Microsoft Excel,然后返回到 Visual Basic 应用程序。

  6. 单击 示例 3。 此示例创建一份 ProductsTemplate.xls。它使用 Microsoft ADO 扩展 2.1 DDL 和安全对象库 (ADOX) 将添加一个新表 (或一张新工作表) 的工作簿。新表然后获得一个 ADO 记录集 和数据由使用 AddNew 添加 / 更新 方法。完成行添加后关闭 ADO 连接 和工作簿显示在 Excel 中。该工作簿包含 Visual Basic 应用程序 (VBA) 宏代码,在 打开 事件中的工作簿。当工作簿打开时运行的宏 ; 如果在工作簿中存在新的"产品"工作表,宏代码的格式设置工作表,则宏代码将被删除。这种方法提供了一种方法使 Web 开发人员可以将格式设置代码从 Web 服务器和到客户端上移动。不可能在模板中来在客户端上运行的 Web 应用程序可能流带格式的工作簿,使其包含到客户端的数据并允许宏代码将执行任何"条件"的格式。

    : 要检查宏代码,查看 ThisWorkbook 模块中在 VBAProject ProductsTemplate.xls 的。

  7. 单击 示例 4。 此示例生成结果与示例 1 相同,但用于传输数据的技术是稍有不同。在示例 1 中的记录 (或行) 添加到第一张工作表一次。示例 4,可将 Excel 表附加到 Access 数据库,并运行追加查询 (或 INSERT INTO...批量添加记录SELECT FROM) 向其追加记录 Access 表中的表从 Excel 表。一旦完成传输从 Access 数据库中分离 Excel 表和工作簿的结果显示在 Excel 中。退出 Excel,并返回到 Visual Basic 应用程序。

  8. 最后一个示例说明了从 Excel 工作簿,您就可以读取数据。在下拉列表列表中选择 ,然后单击 示例 5。立即窗口显示所选表的内容。 如果选择了整张工作表 ("Sheet1 $"或"Sheet2 $") 表的立即窗口将显示所使用的区域,为该工作表中的内容。请注意所使用的区域不一定是以行 1,列 1 的工作表上。所使用的区域开始于上部的最左侧的单元格在工作表中包含的数据。

    如果选择了一个特定范围的地址或定义的范围,立即窗口将显示在工作表上只是该区域的内容。
若要使用活动服务器页面 (ASP)
  1. 创建新的文件夹名 ExcelADO 为在 Web 服务器的主目录中。请注意默认的主目录的路径 C:\InetPut\WWWRoot。
  2. 将以下文件复制到您在上一步中创建的文件夹:
    • EmpData.asp
    • Orders.asp
    • Data.mdb
    • EmpDataTemplate.xls
    • OrdersTemplate.xls

  3. ASP 脚本,在此示例创建使用 Copy 方法的 FileSystemObject 工作簿模板的复本。为成功对 Copy 方法访问脚本客户端必须 ASP 所在的文件夹具有写访问权限。
  4. 导航到 Orders.asp (也就是 http://YourServer/ExcelADO/Orders.ASP),并请注意在浏览器将显示类似于在 Visual Basic 应用程序 示例 1 中一个 Excel 工作簿。
  5. 导航到 EmpData.asp (也就是 http://YourServer/ExcelADO/EmpData.ASP),并请注意在浏览器将显示类似于 Visual Basic 应用程序的 示例 2 中一个 Excel 工作簿。
(c) Microsoft 公司 2000,保留的所有权限。Lori B.旋转器,Microsoft 公司的贡献。

参考

有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
195951HOWTO: 查询和更新使用 ASP 来自 ADO 的 Excel 数据
194124返回为 NULL 使用 DAO OpenRecordset PRB: Excel 值
193998HOWTO: 读取和显示二进位数据在 ASP 中
247412信息: 从 Visual Basic 传输到 Excel 的数据验证方法
257819HOWTO: 在 Visual Basic 或 VBA 的 Excel 数据中使用 ADO

属性

文章编号: 278973 - 最后修改: 2005年3月8日 - 修订: 6.1
这篇文章中的信息适用于:
  • Microsoft Excel 2000 标准版
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft Visual Basic 6.0 专业版
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Active Server Pages 4.0
关键字:?
kbmt kbdownload kbdownload kbautomation kbfile kbprogramming KB278973 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 278973
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com