用于 excel 2013 的 OLEDB 连接字符串

Posted

技术标签:

【中文标题】用于 excel 2013 的 OLEDB 连接字符串【英文标题】:OLEDB connection string for excel 2013 【发布时间】:2013-09-15 22:50:35 【问题描述】:

我正在尝试将我的旧连接字符串调整为 excel 2007 文件以获取 excel 2013 文件 (.xlsx)

这是我以前的:

strConnectionString = string.Format(
    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=0;" + 
    "Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", 
    strFile);

关于新的我能做些什么?

【问题讨论】:

将此添加到您的书签connectionstrings.com/excel-2013 您尝试过当前的吗?你有什么错误吗?这似乎完全有效 是的,我试过了,我有一个错误 你的文件路径有空格吗?也许也将数据源放在引号中?您收到的错误是什么?这会给我们提供很多信息。 【参考方案1】:

你试过这个吗...

string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=0;Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text'", arq)

【讨论】:

虽然帖子非常​​感谢;区别是什么并不明显。通常,代码旁边应该有一个(非常快速的)解释,例如“属性部分中包含'TypeGuessRows=0;ImportMixedTypes=Text'”。【参考方案2】:

将数据视为文本

当您想将文件中的所有数据都视为文本时使用此选项,覆盖 Excels 列类型“常规”以猜测列中的数据类型。

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;
Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";

如果要将列标题读入结果集中(即使有标题也使用 HDR=NO)并且列数据是数字,请使用 IMEX=1 以避免崩溃。

始终使用 IMEX=1 是检索混合数据列数据的一种更安全的方法。考虑这样一种情况:一个 Excel 文件可能工作正常,导致该文件的数据导致驱动程序猜测一种数据类型,而另一个包含其他数据的文件导致驱动程序猜测另一种数据类型。这可能会导致您的应用崩溃。

【讨论】:

以上是关于用于 excel 2013 的 OLEDB 连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

用于查询 Excel 的多个打开命令 oledb 连接

用于读取由其他用户独占打开的 Excel 文件的 OleDB 连接字符串

使用 ACE OLEDB Provider 创建 Excel 文件的数据类型问题

导入Excel 2013到vs,本机没有注册微软ACE.OLEDB.12.0

阅读大型 Excel 文档

excel 2010 和 2013 中的数据模型 // 数据检索