1

我正在尝试通过 OleDb 和 C# 读取 CSV 文件。我能够完美地读取大多数文件,但仅在某些情况下,我会得到空单元格值(即使在这个文件中,也会有一些单元格值出现但不是全部),即使值在那里。你们中有人遇到过 oleDB 和 CSV 文件的问题吗?如果是,那么请告诉解决方案。

4

1 回答 1

2

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

所以如果你有一个像下面这样的csv......

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

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

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

于 2012-08-20T15:51:52.713 回答