c# - 使用 OleDbConnection 读取制表符分隔的文件

标签 c# .net oledb text-files

我的制表符分隔文件是这样的:

ISO ISO3    ISO-Numeric
AD  AND 20

我一直在尝试以下代码,但没有成功。

OleDbConnection cn = new  OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= |DataDirectory|;Extended Properties='text;HDR=Yes;FMT=TabDelimited'");
OleDbCommand cmd = new OleDbCommand(@"SELECT * FROM countryInfo.txt", cn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);

cn.Open();

DataTable dt = new DataTable();
da.Fill(dt);

这是数据集可视化工具的屏幕截图。它显然不是我想要的输出。 alt text

有什么建议吗?这是我的 Schema.ini 文件。它与文本文件位于同一目录中。

[countryInfo.txt]
Format=TabDelimited
ColNameHeader=True
CharacterSet=ANSI

我应该只使用类似 FileHelpers 的东西吗?相反?


@Hans Passant 这是截图。 alt text

最佳答案

创建一个 schema.ini 文件并将其保存到包含以下文本的应用程序文件夹中:

------------------Schema.ini file starts here-----------------
[Data.txt]
ColNameHeader=True
Format=TabDelimited
Col1=First_Name Text
Col2=Middle_Initial Text
Col3=Last_Name Text
------------------Schema.ini file ends here-----------------

然后使用以下代码加载Data.txt文件:

string fileName = string.Format("{0}", AppDomain.CurrentDomain.BaseDirectory);   
string connectionString = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; " + "Extended Properties=\"text;HDR=YES;FMT=TabDelimited;\"", fileName);
string sql = "select * from " + "Data.txt";

OleDbConnection con = new OleDbConnection(connectionString);
con.Open();

OleDbDataAdapter dap = new OleDbDataAdapter(sql, con);
DataTable dt = new DataTable();
dt.TableName = "Data";
dap.Fill(dt);

con.Close();

关于c# - 使用 OleDbConnection 读取制表符分隔的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4063685/

相关文章:

c# - Windows 7手机开发

c# - 没有对 MSysObject 错误的读取权限

c# - 为什么在使用 OleDb 导入 Excel 时忽略第一个空行

c# - 使用 WebApi 和映射模型实现 OData

c# - 即使在对象浏览器中可见,也无法访问可移植类库中的 "System.Servicemodel.Web"

c# - System.ArgumentNullException 与 NetMQ.Msg.Put()

.net - MVVM应用程序序列化设计/实现的示例

c# - HTML Agility Pack 空引用

c# - 如何使用 AfterMap 将属性映射到集合属性

c# - 如何在长名称 dbf 文件上使用 GetOleDbSchemaTable 方法