2012-01-27 124 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