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,1至CDTExpiry,a。
任何人都知道爲什麼會發生這種情況,因爲我使用此代碼從csv文件中批量加載數據,並且我不希望總是先檢查此代碼行的文件。
TX
嗨,謝謝。我發現了錯誤。在我的註冊表設置中,HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Jet \ 4.0 \ Engines \ Text中有一個關鍵IMPORTMIXEDTYPES,它被設置爲RaggedRight。我將其更改爲文本,現在它工作正常。 – Adrian 2011-04-14 10:26:03
對不起,字段值更改爲「文本」實際上是IMPORTFIXEDFORMAT。我將IMPORTMIXEDTYPES留在「多數類型」 – Adrian 2011-04-15 07:40:31