Excel OLEDB将有效值读取为DBNull

时间:2019-04-09 16:17:43

标签: c# excel oledb oledbdatareader

我有一个具有一行双精度值的Excel文件。它可以正确验证前8行,但是如果第9行或更高行中有错误数据,则它将数据类型视为dbnull而不是double。

例如,如果我的专栏看起来像这样(3行):

1234.22
1234.55
5555.xyz  

这会将第3行视为双精度,并且第3行具有字母数字字符

但是,如果我这样做(超过9行):

1234
12345
12346
4357676
3456787
3456567
234234
978978
76867.ddd
123942

然后它将看到倒数第二行为dbNull,单元格值为“”。但是它将看到最后一行再次以正确的单元格值加倍。

这是我的连接字符串,所以我正在使用Imex = 1

string connString = connString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileName + ";Extended Properties='Excel 12.0;IMEX=1;'";

进一步调查是导致问题的原因 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Excel]找到的注册表REG_DWORD“ TypeGuessRows”。注册表中默认为8。

显然,这仅读取前8行。我需要能够扫描所有行。

我无法在代码中设置它吗?我无法在工作中修改注册表

0 个答案:

没有答案