利用OpenDataSource读取Excel数据
2009-01-06 18:11
295 查看
Ms Server2005提供OpenDataSource读取Excel数据很方便。
访问微软官方网http://msdn.microsoft.com/zh-cn/vbasic/ms179856.aspx
了解OpenDataSource 使用方法
语法
OPENDATASOURCE ( provider_name, init_string )
参数
provider_name
注册为用于访问数据源的 OLE DB 访问接口的 PROGID 的名称。provider_name 的数据类型为 char,无默认值。
init_string
连接字符串,该字符串将要传递给目标提供程序的 IDataInitialize 接口。提供程序字符串语法是以关键字值对为基础的,这些关键字值对由分号隔开,例如:“keyword1=value; keyword2=value”。
若要了解提供程序上支持的特定关键字值对,请参阅 Microsoft Data Access SDK。该文档定义了基本语法。下表列出了 init_string 参数中最常用的关键字。
备注
仅当 DisallowAdhocAccess 注册表选项针对指定的提供程序显式设置为 0,并且启用 Ad Hoc Distributed Queries 高级配置选项时,OPENDATASOURCE 才可用于访问 OLE DB 数据源中的远程数据。如果未设置这些选项,则默认行为不允许即席访问。
OPENDATASOURCE 函数可以在能够使用链接服务器名的相同 Transact-SQL 语法位置中使用。因此,可以将 OPENDATASOURCE 用作四部分名称的第一部分,该部分名称引用 SELECT、INSERT、UPDATE 或 DELETE 语句中的表或视图的名称;或者引用 EXECUTE 语句中的远程存储过程。当执行远程存储过程时,OPENDATASOURCE 应该引用 SQL Server 的另一个实例。OPENDATASOURCE 不接受参数变量。
与 OPENROWSET 函数类似,OPENDATASOURCE 应该只引用那些不经常访问的 OLE DB 数据源。对于访问次数较频繁的任何数据源,请为它们定义链接服务器。无论 OPENDATASOURCE 还是 OPENROWSET 都不能提供链接服务器定义的全部功能,例如,安全管理以及查询目录信息的功能。每次调用 OPENDATASOURCE 时,都必须提供所有的连接信息(包括密码)。
举例说明如下:
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="D:/BA_428201452.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...[Sheet1$]
特强调Excel文件必须与Ms Server2005数据库属于同一个服务器中,不然提示错误:
访问微软官方网http://msdn.microsoft.com/zh-cn/vbasic/ms179856.aspx
了解OpenDataSource 使用方法
语法
OPENDATASOURCE ( provider_name, init_string )
参数
provider_name
注册为用于访问数据源的 OLE DB 访问接口的 PROGID 的名称。provider_name 的数据类型为 char,无默认值。
init_string
连接字符串,该字符串将要传递给目标提供程序的 IDataInitialize 接口。提供程序字符串语法是以关键字值对为基础的,这些关键字值对由分号隔开,例如:“keyword1=value; keyword2=value”。
若要了解提供程序上支持的特定关键字值对,请参阅 Microsoft Data Access SDK。该文档定义了基本语法。下表列出了 init_string 参数中最常用的关键字。
关键字 | OLE DB 属性 | 有效值和说明 |
---|---|---|
数据源 | DBPROP_INIT_DATASOURCE | 要连接的数据源的名称。不同的提供程序用不同的方法对此进行解释。对于 SQL Server Native Client OLE DB 访问接口,这指示服务器的名称。对于 Jet OLE DB 访问接口来说,这指示 .mdb 文件或 .xls 文件的完整路径。 |
位置 | DBPROP_INIT_LOCATION | 要连接的数据库的位置。 |
扩展属性 | DBPROP_INIT_PROVIDERSTRING | 提供程序特定的连接字符串。 |
连接超时 | DBPROP_INIT_TIMEOUT | 达到该超时值后,连接尝试将失败。 |
用户 ID | DBPROP_AUTH_USERID | 用于该连接的用户 ID。 |
密码 | DBPROP_AUTH_PASSWORD | 用于该连接的密码。 |
目录 | DBPROP_INIT_CATALOG | 连接到数据源时的初始或默认的目录名称。 |
集成安全性 | DBPROP_AUTH_INTEGRATED | SSPI,指定 Windows 身份验证 |
备注
仅当 DisallowAdhocAccess 注册表选项针对指定的提供程序显式设置为 0,并且启用 Ad Hoc Distributed Queries 高级配置选项时,OPENDATASOURCE 才可用于访问 OLE DB 数据源中的远程数据。如果未设置这些选项,则默认行为不允许即席访问。
OPENDATASOURCE 函数可以在能够使用链接服务器名的相同 Transact-SQL 语法位置中使用。因此,可以将 OPENDATASOURCE 用作四部分名称的第一部分,该部分名称引用 SELECT、INSERT、UPDATE 或 DELETE 语句中的表或视图的名称;或者引用 EXECUTE 语句中的远程存储过程。当执行远程存储过程时,OPENDATASOURCE 应该引用 SQL Server 的另一个实例。OPENDATASOURCE 不接受参数变量。
与 OPENROWSET 函数类似,OPENDATASOURCE 应该只引用那些不经常访问的 OLE DB 数据源。对于访问次数较频繁的任何数据源,请为它们定义链接服务器。无论 OPENDATASOURCE 还是 OPENROWSET 都不能提供链接服务器定义的全部功能,例如,安全管理以及查询目录信息的功能。每次调用 OPENDATASOURCE 时,都必须提供所有的连接信息(包括密码)。
举例说明如下:
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="D:/BA_428201452.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...[Sheet1$]
特强调Excel文件必须与Ms Server2005数据库属于同一个服务器中,不然提示错误:
消息 7399,级别 16,状态 1,第 1 行 链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 报错。提供程序未给出有关错误的任何信息。 消息 7303,级别 16,状态 1,第 1 行 无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象。 |
相关文章推荐
- java利用注解实现简单的excel数据读取
- 小例子:java利用poi读取excel中数据并导入数据库
- 利用java读取Excel中的数据
- 利用Ado.net来读取用户所指定的excel数据
- C#利用Openxml读取Excel数据实例
- 利用POI插件导入excel怎样读取合并行数据?
- java利用poi读取数据写进excel
- 利用PHPExcel读取Excel的数据和导出数据到Excel
- 利用POI将读取的数据写入Excel
- 利用PHPExcel读取Excel的数据和导出数据到Excel
- 利用PHPExcel读取Excel的数据和导出数据到Excel
- 利用QTP调用外部VBS方法读取指定Excel数据的方法
- 利用JS-XLSX插件 用JS读取excel数据
- 利用java读取Excel中的数据!
- 利用jxl包从sqlserver数据库中读取数据存到Excel中
- 利用POI读取Excel数据,实现同时读取多个Excel文件,兼容所有浏览器
- 利用js生成读取页面数据并导出为excel
- c#利用Excel直接读取数据到DataGridView
- 利用java如何读取Excel中的数据!
- 猜想-未做 利用office组件读取excel数据