我在解析Windows Server 2008 64位版本中的* .CSV文件時遇到了一些麻煩。 Jet OLEDB 4.0不會讀取標題行中存在的問題,即CSV中顯示的問題。解析Windows Server 2008 64位版本中的CSV文件C#
這意味着,當我嘗試訪問這樣的一列:
DataTable tbl = GetCsvData();
string sd = tbl.Rows[0]["id"].ToString();
程序拋出一個異常,說,列不中確定年代的歸屬。
我用下面的代碼:
public DataTable GetCsvData() {
FileInfo file = new FileInfo(this.fileName);
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + file.DirectoryName + "\\;" +
"Extended Properties=\"text;HDR=Yes;FMT=Delimited(;)\";";
OleDbConnection objConn = new OleDbConnection(connectionString);
objConn.Open();
OleDbCommand objCmdSelect = new OleDbCommand(string.Format("SELECT * FROM [{0}]", file.Name), objConn);
OleDbDataAdapter adp = new OleDbDataAdapter(objCmdSelect);
DataTable tbl = new DataTable("CSVData");
adp.Fill(tbl);
objConn.Close();
objConn.Dispose();
return tbl;
}
正如你所看到的,擴展屬性是正確的:「HDR =是」,這迫使Jet引擎讀取CSV文件的標題行。
這個問題真的很奇怪,因爲我可以在開發機器上讀取同一個CSV文件(Windows XP SP3),絕對沒有問題。
我認爲這是派生到Windows服務器的64位版本的2008年
我檢查的Msjet40.dll文件的版本的服務器和本地機器上都存在問題:
Windows XP SP3 => 4.0.9551
Windows Server 2008 64 bit => 4.0.9755
問題不在CSV文件上,它在Microsoft提供的驅動程序中(至少是我認爲的),因爲我可以在我的機器上完美地讀取CSV文件。
是否有任何想法解決這個問題的方法?我GOOGLE了很多,但我找不到任何東西。
謝謝..
你能否通過連接來自兩個系統的外部應用程序的數據來驗證它是驅動程序?例如,Excel或SQL鏈接查詢(很可能你的服務器上沒有Excel)。 – 2010-02-22 17:15:19
我沒有在服務器上的Excel ...這是肯定的...我無法驗證..謝謝.. – Tio 2010-02-22 17:38:14
JET驅動程序不可用在64位模式。你是否強制你的程序在32位模式下運行? – 2010-02-22 18:11:32