一尘不染

帮助Excel文件的OleDB连接字符串

c#

我遇到的问题是,数据适配器仅查看每列的第一行以确定数据类型。在我的情况下,第一列“
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行,然后将文本用作所有内容的值类型。

我设置的“创可贴”是使电子表格中的第一行包含字母和数字,并明确地在我的查询中保留该行。


阅读 345

收藏
2020-05-19

共1个答案

一尘不染

不幸的是,由于这些设置是在注册表中定义的,因此无法设置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;""";

一旦您设置TypeGuessRows0ImportMixedTypesText在注册表中,你应该得到你期望的行为。但是,如果发现导入性能不理想,则可以考虑使用一个较大的数字,例如1000而不是零。

2020-05-19