2013-03-11 104 views
1

我有讀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

回答

0

任何未來可能會遇到類似問題的人,我的解決方案是創建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.謝謝布拉德