【发布时间】:2016-05-13 20:22:22
【问题描述】:
我有一个大的固定宽度的文本文件,我想逐行读取它并插入数据表,或者只是将它读入数据表。如何将一列从哪个位置分配到哪个位置?
我还必须执行一些操作,例如为每条记录修剪列的额外空间。
我试过这段代码,但它给了我只有 3 列而不是 15 列的数据表
string sourcePath = @"c:\\";
string filename = "file.txt";
DataTable dt;
//Create OleDb connection object
using (OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;" +
"Data Source=" + sourcePath + ";Extended Properties=\"Text;\""))
{
// Open connection
cn.Open();
// Create OleDb Adapter object
using (OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM " + filename, cn))
{
dt = new DataTable("Records");
adapter.Fill(dt);
// Display results
dataGridView1.DataSource = dt;
}
}
样本数据
样品名称.......~地址~城市~州~12345 联系人姓名 123-456-7890 支付类型 样品名称.......~地址~城市~州~12345 联系人姓名 123-456-7890 支付类型 样品名称.......~地址 City~State~12345 联系人姓名 123-456-7890 类型 付款 样品名称.......~地址 City~State~12345 联系人姓名 123-456-7890 类型付款
中间有很多空格..
【问题讨论】:
-
到目前为止您尝试了什么?输入文件的格式/结构是什么?
-
我试过OleDb,文件是定宽文本文件
-
请发布您的数据文件的一些示例行
-
如果它是固定宽度的文本文件,我更喜欢通过 StreamReader 读取并使用 Substring 提取列值并创建数据表。您可能最终为此编写了一个包装类。或者你试过这个吗? filehelpers.net
-
如果您要手动拆分数据,可以尝试使用 TextFieldParser
标签: c# asp.net text datatable fixed-width