CSV文件中读取错误的值

问题描述:

我有读CSV文件导入记录集合代码:CSV文件中读取错误的值

以下是主要部分:

conn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
     "Data Source=" & Sheets("Reference").Range("DataSource").Value & ";" & _ 
     "Extended Properties=""text; HDR=Yes; FMT=Delimited; IMEX=1;""") 
strSQL = "Select * from file.csv" 
rsFutures.Open strSQL, conn 

vTemp = rsFutures("Start /Index") 
If Not IsNull(vTemp) Then cells(1,1) = vTemp 

我有一个问题,文件中的值3S6S,记录集有36 ??? !!!! 这是怎么回事?

所有的想法非常感谢。 谢谢。

+0

在文件中的哪些行号发生?第0 - 20行的行对于文件中的那一列看起来如何? – Brad 2013-03-12 00:08:29

+0

该字段的前20条记录是空的,所以它从第23行开始。有关系吗? – ilyaw77 2013-03-12 01:47:13

+0

除非您指定列的数据类型,否则会根据第一行〜第20行进行猜测。当它应该是字符串并丢弃所有非数字字符时,它可能猜到了一个整数。当出现错误并查看该列上的数据类型时,进入记录集。也许,尝试在第一行放置一个空字符串,''“''或一些字母。 – Brad 2013-03-12 02:09:26

任何未来可能会遇到类似问题的人,我的解决方案是创建Schema.ini文件,该文件立即处理记录集列类型。这里是小样本:

[myfile.csv] 
Format=CSVDelimited 
ColNameHeader=True 
Col1=TR Char Width 255 
Col2=Book Char Width 255 
... 
ColN=Comment Char Width 255 
CharacterSet=ANSI 

只是将其保存在导出(或保存)csv文件的相同文件夹中。 祝你好运。

p.s.谢谢布拉德