【问题标题】:import form text file to gridview c#将表单文本文件导入gridview c#
【发布时间】:2017-09-12 17:40:59
【问题描述】:
我正在尝试使用自爆代码将数据从文本文件导入网格视图:
DataTable dt = new DataTable();
using (System.IO.TextReader tr = File.OpenText((@"d:\\My File3.log")))
{
string line;
while ((line = tr.ReadLine()) != null)
{
string[] items = line.Trim().Split(' ');
if (dt.Columns.Count == 0)
{
// Create the data columns for the data table based on the number of items
// on the first line of the file
for (int i = 0; i < items.Length; i++)
dt.Columns.Add(new DataColumn("Column" + i, typeof(string)));
}
dt.Rows.Add(items);
}
//show it in gridview
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
我的文件是这样的:
A B C
E F D C C
E D D D
DP
然后我得到以下错误
输入数组长于c#应用中此表的列数
【问题讨论】:
标签:
c#
sql
asp.net
gridview
datagridview
【解决方案1】:
当所需的列数(Split(' ') 之后)大于 实际 (dt.Columns.Count) 一时,您应该添加新列:
// File.ReadLines is easier to read and maintain
var items = File
.ReadLines(@"d:\My File3.log") // single \ since we have verbatim string @
//.Where(line => !string.IsNullOrWhiteSpace(line)) // if you want to remove empty lines
.Select(line => line.Trim().Split(' '));
DataTable dt = new DataTable();
foreach (var line in items) {
// Do we want extra columns?
while (line.Length > dt.Columns.Count)
dt.Columns.Add(new DataColumn($"Column {dt.Columns.Count}", typeof(string)));
dt.Rows.Add(line);
}
GridView1.DataSource = dt;
GridView1.DataBind();
【解决方案2】:
看起来您已经根据第一行创建了table 的columns,但在第二行中的列比第一行多。请检查下面的代码,它将基于MAX 列工作。
代码:
DataTable dt = new DataTable();
List<string[]> list = new List<string[]>();
int maxItem = 0;
using (System.IO.TextReader tr = File.OpenText((@"d:\\My File3.log")))
{
string line;
while ((line = tr.ReadLine()) != null)
{
string[] items = line.Trim().Split(' ');
if (maxItem <= items.Count())
{
maxItem = items.Count();
}
list.Add(items);
}
for (int i = 0; i < maxItem; i++)
dt.Columns.Add(new DataColumn("Column" + i, typeof(string)));
foreach (var items in list)
{
dt.Rows.Add(items);
}
//show it in gridview
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
在您的数据中,某行包含empty。因此,您必须检查代码中的empty 行。
您的数据输出: