Excel的 OleDb 连接串的格式(Provider=Microsoft.ACE.OLEDB)

string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filePath + ";Extended Properties=‘Excel 12.0;HDR=Yes;IMEX=1‘";
//Excel 2007文件

Provider=Microsoft.Jet.OleDb.4.0;data source=" + filePath + ";Extended Properties=‘Excel 8.0;HDR=Yes;IMEX=1‘";
//Excel 2003文件

Jet 引擎,可以访问Office97-2003,但不能访问 Office 2007。

ACE 引擎,是随Office2007一起发布的数据库连接组件,既可以访问 Office 2007,也可以访问Office97-2003。

另外:Microsoft.ACE.OLEDB.12.0 可以访问正在打开的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。

HDR 表示第一行是否是标题行。

  • 若为 YES,则第一行是标题行(即列名称),不是数据;
  • 若为 NO,则第一行不是标题行,跟后面的行一样,是数据。

IMEX 表示混合数据类型时如何处理。

  • 若为 0,则为输出模式,此情况下只能用作写入 Excel;
  • 若为 1,则为输入模式,此情况下只能用作读取 Excel,并且始终将 Excel 数据作为文本类型读取;
  • 若为 2,则为连接模式,此情况下既可用作写入、也可用作读取。

Excel 第一行第一列可以存储字符串,第二行第一列又可以存储数字……同样的列,存储不同的数据类型,这就形成了混合数据类型。

所以若要读取混合数据类型,应该将 IMEX 设置为 1;若误设置为 0,则读取不到任何行;若误设置为 2 或省略,则有些数据读取出来是空白。

ps:IMEX=1只确保在某列前8行数据至少有一个是文本项的时候才起作用,它只是把查找前8行数据中数据类型占优选择的行为作了略微的改变。例如某列前8行数据全为纯数字,那么它仍然以数字类型作为该列的数据类型,随后行里的含有文本的数据仍然变空。

时间: 2024-11-11 19:32:58

Excel的 OleDb 连接串的格式(Provider=Microsoft.ACE.OLEDB)的相关文章

关于异常“The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine”的处理

我们在利用SqlBlukcopy技术倒2010 或者2007格式的文件到SqlServer 数据库的时候,会发生如下错误: 原因如下: 1.在用SQL SERVER 2005访问.xlsx文件(office2007&2010文件格式)时,必须用provider 'Microsoft.ACE.OLEDB.12.0' 来实现.2.首先要安装AccessDatabaseEngine.exe.下载路径:http://www.microsoft.com/downloads/details.aspx?fam

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine. 1.在用SQL SERVER 2005访问.xlsx文件(office2007&2010文件格式)时,必须用provider 'Microsoft.ACE.OLEDB.12.0' 来实现.2.首先要安装AccessDatabaseEngine.exe.下载路径:http://www.microsoft.com/downloads/deta

Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别

Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别 时间 2012-12-19 20:30:12  CSDN博客原文  http://blog.csdn.net/xifeijian/article/details/8333396 在通过ADO对Excel对象进行连接时(此时Excel则认为是一个数据源),需要配置对Excel数据源对应的连接串,这个连接串中包括了 Provider 信息(其实类似对数据库进行连接操作时,都需要指定连接字符串),以

Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别(转)

在通过ADO对Excel对象进行连接时(此时Excel则认为是一个数据源),需要配置对Excel数据源对应的连接串,这个连接串中包括了Provider信息(其实类似对数据库进行连接操作时,都需要指定连接字符串),以下是一行连接串源代码: strConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strExcelFilePath & ";Extended Properties=Excel

win10:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序

说明:C#以 oledb的方式读取excel时,xls格式的文件读取正常,但是xlsx格式的提示错误:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序 解决办法: 1.下载对应组件安装:https://www.microsoft.com/zh-CN/download/details.aspx?id=13255 注意:要选择AccessDatabaseEngine.exe,而不是AccessDatabaseEngine64.exe,否则还会提示错误!!! 2.控制面

Microsoft ACE OLEDB 12.0概念及用法

首先需要清楚几个概念: Database engine(数据引擎):一些预先存储于数据库中的组件: Microsoft JET (Joint Engine Technology):Microsoft Jet 数据引擎,1992年发行初版,主要运用于 Microsoft Accesss的数据连接,Jet引擎,仅能访问 Office97-2003: Microsoft ACE(Office Access Connectivity Engine ):随着Access 2007发布之后, Microso

System.InvalidOperationException: 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。

最近用MVC3 做了一个项目,发布时项目的中的数据导入功能(Excel格式,有固定的导入数据模板)居然不能用,查看报错日志,发现是“System.InvalidOperationException: 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序............”. 在网上找一些资料,把问题解决了.如下图所示. 后台功能代码:导入与导出实现代码. 1 #region -使用IO写入Excel- 2 /// <summary> 3 /// 使用IO写入E

未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0

从Excel中导入数据时,提示"未在本地计算机上注册"Microsoft.ACE.OLEDB.12.0"提供程序"的解决办法 操作系统:使用的是64位的Windows Server 2008 解决办法: 这是由于该计算机上没有安装Microsoft Access Database Engine组件,该组件帮助在现有的Microsoft Office文件与其他数据源之间传输数据. 在向软件中导入数据时,如果数据源选用Excel时,连接字符串中使用的是"Mic

错误:“未在本地计算机上注册“microsoft.ACE.oledb.12.0”

C#通过OleDb访问Excel 错误信息:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序.网上查询得知需要下载安装Microsoft Access 2010 数据库引擎可再发行程序包.下载地址为:https://www.microsoft.com/zh-CN/download/details.aspx?id=13255. 支持的操作系统 Windows 7, Windows 8, Windows Server 2003, Windows Server 2003