通过Oledb c#错误的数据

时间:2012-08-14 09:57:19

标签: c# csv oledb oledbconnection

我正在尝试通过OleDb和C#读取CSV文件。我能够完美地读取大部分文件,但仅在某些情况下我得到空单元格值(即使在此文件中,某些单元格值即将到来但并非全部),即使值存在。有没有人遇到过oleDB和CSV文件这样的问题?如果是,那么请告诉解决方案。

1 个答案:

答案 0 :(得分:1)

OLEDB喜欢根据前几行中找到的值来猜测数据类型,并且在猜到之后任何不符合该数据类型的内容都会返回null / empty。

所以如果你有一个类似下面的csv ......

1,A
2,B
3,C
4,D
5A,E
5B,F
6,G
7,H

取决于注册表设置(我对Excel的这个问题更熟悉,不确定它是否以相同的方式配置CSV),OLEDB可能会读取前8条记录,并确定第一列是数字,因为大多数数据是数字,第二个是char,一旦设置了这些数据类型,如果它读取第一列的非数字值,它不会抛出任何错误,只返回值为null。

如果这是您的问题,我相信您可以通过在连接字符串中使用IMEX = 1来强制将混合数据作为文本读取,然后在检索值时,我总是使用GetValue,而不是到GetString或GetDouble等。