c# - 帮助处理 excel 文件的 OleDB 连接字符串

标签 c# connection-string oledbconnection import-from-excel

我遇到的问题是数据适配器只查看每列中的第一行以确定数据类型。在我的例子中,第一列“SKU”是前 500 行的数字,然后我碰巧有混合数字和字母的 SKU。所以最终发生的是 SKU 列中的行留空,但我仍然获得每列行的其他信息。

我相信这是控制它的连接字符串,并且根据我当前的设置它应该可以工作,但事实并非如此。

连接字符串:

conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Nick\Desktop\Pricing2.xlsx" + @";Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1;ImportMixedTypes=Text;TypeGuessRows=0""";


ImportMixedTypes=Text;TypeGuessRows=0

应该是重要的关键字,查看 0 行并仅使用文本作为所有内容的值类型。

我在这上面加上的“创可贴”是让电子表格中的第一行混合字母和数字,特别是在我的查询中将该行排除在外。

最佳答案

不幸的是,您不能从连接字符串中设置 ImportMixedTypesTypeGuessRows,因为这些设置是在注册表中定义的。对于 ACE OleDb 驱动程序,它们存储在

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel

在注册表中。因此,您可以将连接字符串简化为:

conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Nick\Desktop\Pricing2.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1;""";

在注册表中将 TypeGuessRows 设置为 0 并将 ImportMixedTypes 设置为 Text 后,您应该会得到该行为你在期待。但是,如果您发现导入性能不理想,您可以考虑使用一个适当大的数字,例如 1000 而不是零。

关于c# - 帮助处理 excel 文件的 OleDB 连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4551203/

相关文章:

c# - 0MQ与NetMQ的通信

Azure 错误 - 连接字符串困难

c# - 无法将类型 IEnumerable 转换为列表

c# - MaxCounters codility 理解

c# - 如何更改连接字符串初始目录

c# - 如何制作连接字符串类?

c# - Microsoft Office Access 数据库引擎无法打开或写入文件 ''

c# - Excel SqlBulkCopy 在本地 pc 和应用程序服务器上的工作方式不同吗?

c# - 更新面板、确认按钮和更新进度似乎无法协同工作

c# - 无法连接到 SQL Server 数据库