2012-01-27 160 views
-3

自從我必須嘗試使用​​Microsoft Text ODBC驅動程序或Microsoft Jet OLE DB 4.0提供程序讀取文件以來,這已經有好幾年了。閱讀固定格式文本文件

所以我有以下代碼

public void Example() 
{ 
string CVS = Application.StartupPath; 
string SQL = "SELECT * FROM [MyFile.txt]"; 
string Connection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+CVS+";"+"Extended Properties='text;HDR=Yes;FMT=Fixed;"; 
OleDbDataAdapter OLE = new OleDbDataAdapter(SQL,Connection); 
DataTable Table = new DataTable(); 
OLE.Fill(Table); 
} 

當我運行上面的代碼,我得到一個「意外的錯誤」,我知道我失去了一些東西,我不知道到底是什麼。

來源:

http://www.connectionstrings.com/textfile
http://www.connectionstrings.com/Providers/net-framework-data-provider-for-ole-db
http://www.aspdotnetcodes.com/Importing_CSV_Database_Schema.ini.aspx

任何方向,將不勝感激。

讓我們假設Schema.ini文件是正確的。它有30和60個長度的文本值。如果需要,我會提供該文件。

+0

哇,不知道我們可以讀取那樣的文本文件。 – 2012-01-27 16:21:16

+0

嘗試向連接字符串中的路徑添加尾部反斜槓。它在第三個來源的例子中明確加入了。它可能會有所作爲。 – 2012-01-27 16:25:41

+0

如果您正在處理分隔文件,那麼逐行讀取它會更容易嗎? – Tim 2012-01-27 16:26:56

回答

4

從連接字符串中刪除'(僅在'text;'之前)。

爲了解決「找不到可安裝ISAM」,運行以下命令:Regsvr32的 C:\ WINNT \ SYSTEM32 \ mstext40.dll *確保文件是文件夾中的第一個。並將WINNT更改爲您的Windows目錄。

+0

你確定這是目錄路徑? – 2012-01-27 17:20:24

+1

將winnt更改爲您的Windows目錄。 – Holystream 2012-01-27 17:26:58

+0

我能找到該文件。使用該命令,我仍然得到錯誤。繼續玩一段時間。 **真的希望使用Access文件的COM庫更容易使用。** – 2012-01-27 17:42:35

0

我知道這不是你的問題的真正答案,但我真的會重新考慮使用這種體系結構來讀取文件。

我真的更喜歡像CSV Reader這樣的東西,因爲它給了你更多的權力如何解釋數據。另外,你也可以看看FileHelpers

+0

有問題的文件不是逗號分隔值。它是從一個訪問數據庫導出的,我想保留這個格式。 – 2012-01-27 16:37:39