C# 将文本文件上载到数据表
我试图允许用户将现有信息上传到数据表。以下是上传的代码:C# 将文本文件上载到数据表,c#,datatable,datagridview,C#,Datatable,Datagridview,我试图允许用户将现有信息上传到数据表。以下是上传的代码: private void label30_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog() == DialogResult.OK) { StreamReader read
private void label30_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
StreamReader read = new StreamReader(File.OpenRead(ofd.FileName));
string[] lines = File.ReadAllLines(ofd.FileName);
string[] values;
for (int i = 31; i < lines.Length; i++)
{
values = lines[i].ToString().Split(',');
string[] row = new string[values.Length];
for (int j = 0; j < values.Length; j++)
{
row[j] = values[j].Trim();
}
stkSheetdgv.Rows.Add(row);
read.Close();
read.Dispose();
}
}
}
解决此问题有两种不同的方法,一种是删除
数据源的分配(例如,删除stkSheetdgv.DataSource=dt;
),另一种是明确添加到数据源中:
代码
private void label30_Click(object sender, EventArgs e)
{
DataTable dataTable = (DataTable)stkSheetdgv.DataSource;
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
using (StreamReader read = new StreamReader(File.OpenRead(ofd.FileName)))
{
string[] lines = File.ReadAllLines(ofd.FileName);
string[] values;
for (int i = 31; i < lines.Length; i++)
{
values = lines[i].ToString().Split(',');
var dataRow = dataTable.NewRow();
for (int j = 0; j < values.Length; j++)
{
dataRow[j] = values[j].Trim();
}
dataTable.Rows.Add(dataRow);
dataTable.AcceptChanges();
}
}
}
}
这对我来说非常好。您需要先添加一个,为新行赋值,然后添加到数据表中。
。请进一步查看。@Hayden您能告诉我代码是如何执行的吗?您能提供如何初始化stkSheetdgv(带列和全部)吗以及csv的格式。提供信息时,请编辑问题,然后标记我。它现在在dataRow[j]=values[j].Trim()处出错代码>错误显示为System.IndexOutOfRangeException:“找不到第9列”。
private void label30_Click(object sender, EventArgs e)
{
DataTable dataTable = (DataTable)stkSheetdgv.DataSource;
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
using (StreamReader read = new StreamReader(File.OpenRead(ofd.FileName)))
{
string[] lines = File.ReadAllLines(ofd.FileName);
string[] values;
for (int i = 31; i < lines.Length; i++)
{
values = lines[i].ToString().Split(',');
var dataRow = dataTable.NewRow();
for (int j = 0; j < values.Length; j++)
{
dataRow[j] = values[j].Trim();
}
dataTable.Rows.Add(dataRow);
dataTable.AcceptChanges();
}
}
}
}
AAC 1/0 POPPY,30C4 CCA,C1-LD,E1-5-144,F1-2 Expansion,G311-15kVA,M2-12,M8-60-10',M5-5LD
AAC 477 COSMOS,30C5 CCA,C2-LD,E1-5-144P,F1-2 Plate,G311-25kVA,M2-11,M8-100-10',M5-5HD