我正在尝试通过OleDb和C#读取CSV文件。我能够完美地读取大多数文件,但只有在某些情况下我得到空单元格值(即使在这个文件中,一些单元格值也会到来,但不是全部),即使值在那里。你们中是否有人在使用oleDB和CSV文件时遇到过这样的问题?如果是,请告诉解决方案。
OLEDB 喜欢根据前几行中找到的值来猜测数据类型,任何在猜测后不符合该数据类型的内容都会返回 null/空。
因此,如果您有如下所示的csv...
1,A
2,B
3,C
4,D
5A,E
5B,F
6,G
7,H
根据注册表设置(我更熟悉 Excel 的这个问题,不确定它是否以相同的方式为 CSV 配置),OLEDB 可能会读取前 8 条记录,并确定第一列是数字,因为大多数数据是数字,第二列是字符,一旦它设置了这些数据类型, 如果它读取第一列的非数字值,则不会引发任何错误,只是将值返回为 null。
如果这是您的问题,我相信您可以通过在连接字符串中使用 IMEX=1 来强制将混合数据读取为文本来解决它,然后在检索值时,我总是使用 GetValue,而不是 GetString 或 GetDouble 等。