用于Excel文件的OleDB连接string帮助
我遇到的问题是数据适配器只查看每列中的第一行来确定数据types。 在我的情况下,第一列“SKU”是前500行的数字,然后我碰巧具有混合的数字和字母的SKU。 那么最后发生的是SKU列中的行是空白的,但是我仍然可以得到每列行的其他信息。
我相信这是连接string控制,并与我目前的设置,它应该工作,但事实并非如此。
连接string:
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行,只是使用文本作为所有值的types。
我把这个“bandaid”放在电子表格的第一行是字母和数字的混合,特别是在我的查询中留下这一行。
不幸的是,您不能从连接string中设置ImportMixedTypes
或TypeGuessRows
,因为这些设置是在registry中定义的。 对于ACE OleDb驱动程序,它们存储在
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel
在registry中。 所以,你可以简化你的连接string:
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
中将TypeGuessRows
设置为0
并将ImportMixedTypes
为Text
,您应该会获得您期望的行为。 但是,如果您发现导入性能不理想,则可能会考虑使用1000而不是0的适当大的数字。