2011-08-25 68 views
0

一個簡單但很奇怪的問題。我使用的OLEDB連接從Excel數據庫,這個循環讀取從每列VB.NET - 嘗試讀取數據列的標題時從Excel中讀取空白字符串?

While reader.Read() 

      For i As Integer = 0 To reader.FieldCount - 1 
       temp = reader(i).ToString + ControlChars.Tab 
       output_file.Write(temp) 
       'output_file.Write(reader(i).ToString() + ControlChars.Tab) 
      Next 

      output_file.WriteLine() 
     End While 

某些列包含日期信息,這些信息讀入細(通常爲讀取所有數據一個字符串「2/20/2011」左右),但這些列的標題被讀入爲空白「」。所有其他列的標題讀取正確,但不包含包含列的日期。任何想法如何我可以解決這個問題?

+0

列標題包含什麼? – aphoria

+0

@aphoria只是字符串作爲列的名稱 – cost

+0

您的連接字符串中是否將HDR設置爲yes? – Fionnuala

回答

0

那麼這是我偶然發現的解決方案。您的連接字符串需要「IMEX = 1;」其中告訴讀者所有的數據類型應該被讀爲字符串。

Dim jet_string As String = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + input_file_path + ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1;""" 
+0

如果您篡改註冊表,IMEX設置只會有很大用處。另外,它只與混合數據類型有關。 http://support.microsoft.com/kb/257819 – Fionnuala

+0

另外 - 我試過這個,它沒有區別(承認在ODBC連接字符串)。 – Simon

0

是否因爲OLEDB推斷日期列(DateTime或其他)的類型和標題不符合此類型?我遇到過與ODBC相似的問題,忽略了數字列中的奇數字符串。

+0

這是可能的。你能解決問題嗎? – cost

+0

@cost - no,最後不得不用alpha字符前綴所有數據,然後在導入後再剝離它。 – Simon

+0

查看我發佈的答案,它可能會幫助您在將來 – cost