2011-04-13 74 views
1

我有一個奇怪的問題,閱讀一個.csv文件使用C#。下面是該文件的內容:Microsoft.Jet.OLEDB.4.0奇怪的問題閱讀csv文件

**ColumnName,     Column Value** 
Bestemming,      aaa.asp 
BuEn_SubSystem,     B 
BusinessListActive,    FALSE 
cancreatelogin,     0 
CDTAccess,      Y 
CDTAssessmentNo,    4172 
CDTAssessRO,     N 
CDTCntComp,      0 
CDTCntOnf,      0 
***CDTExpiry,     1*** 

我使用下面的代碼來讀取文件:

using System; 
using System.Data; 
using System.IO; //not used by default 
using System.Data.OleDb; //not used by default 


class CSVParser 
    { 
     public static DataTable ParseCSV(string path) 
     { 
      if (!File.Exists(path)) 
       return null; 

      string full = Path.GetFullPath(path); 
      string file = Path.GetFileName(full); 
      string dir = Path.GetDirectoryName(full); 


      //create the "database" connection string 
      string connString = "Provider=Microsoft.Jet.OLEDB.4.0;" 
       + "Data Source=\"" + dir + "\\\";" 
       + "Extended Properties=\"text;HDR=Yes;FMT=Delimited\""; 

      //create the database query 

      string query = "SELECT * FROM " + "[" + file + "]"; 

      //create a DataTable to hold the query results 
      DataTable dTable = new DataTable(); 


      //create an OleDbDataAdapter to execute the query 
      OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, connString); 

      try 
      { 
       //fill the DataTable 
       dAdapter.Fill(dTable);     

      } 
      catch (InvalidOperationException /*e*/) 
      { } 

      dAdapter.Dispose(); 

      return dTable; 
     } 
    } 

出於某種原因,CDTExpiry場給人的問題。我所要做的只是將數字更改爲非數字字段,並且它工作正常!例如CDTExpiry,1CDTExpiry,a

任何人都知道爲什麼會發生這種情況,因爲我使用此代碼從csv文件中批量加載數據,並且我不希望總是先檢查此代碼行的文件。

TX

回答

1

我相信這是在Microsoft.Jet庫,允許這樣的事情擴展屬性....我記得幾年前有一個類似的問題,我想我固定它的方式。做一些谷歌搜索擴展屬性,看看你是否能找到一個可以幫助你的領域接受數字

+0

嗨,謝謝。我發現了錯誤。在我的註冊表設置中,HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Jet \ 4.0 \ Engines \ Text中有一個關鍵IMPORTMIXEDTYPES,它被設置爲RaggedRight。我將其更改爲文本,現在它工作正常。 – Adrian 2011-04-14 10:26:03

+0

對不起,字段值更改爲「文本」實際上是IMPORTFIXEDFORMAT。我將IMPORTMIXEDTYPES留在「多數類型」 – Adrian 2011-04-15 07:40:31