我遇到的问题是,数据适配器仅查看每列的第一行以确定数据类型。在我的情况下,第一列“ 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行,然后将文本用作所有内容的值类型。
我设置的“创可贴”是使电子表格中的第一行包含字母和数字,并明确地在我的查询中保留该行。
不幸的是,由于这些设置是在注册表中定义的,因此无法设置ImportMixedTypes或TypeGuessRows从连接字符串进行设置。对于ACE OleDb驱动程序,它们存储在
ImportMixedTypes
TypeGuessRows
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而不是零。
0
Text