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