20

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

我为此使用的“创可贴”是使电子表格中的第一行混合了字母和数字,并专门将该行留在我的查询中。

4

1 回答 1

31

不幸的是,您无法设置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;""";

在注册表中设置TypeGuessRowsto0ImportMixedTypestoText后,您应该会得到您期望的行为。但是,如果您发现导入性能不太理想,您可以考虑使用适当的大数字(例如 1000)而不是零。

于 2011-01-11T23:02:21.693 回答