我遇到的问题是,数据适配器只查看每列中的第一行来确定数据类型。在我的例子中,第一列"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行,并且只使用文本作为所有内容的值类型。
我的“创可贴”是使电子表格中的第一行是字母和数字的混合,特别是在我的查询中省略了该行。
发布于 2011-01-12 07:02:22
不幸的是,您不能从连接字符串设置ImportMixedTypes或TypeGuessRows,因为这些设置是在注册表中定义的。对于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而不是零。
https://stackoverflow.com/questions/4551203
复制相似问题