如何在 C# 中将 Excel 数据插入现有的 table
How to insert Excel Data into existing table in C#
您好,我才刚刚开始创建考试安排系统,在将 Excel table 插入我的数据网格视图时遇到问题。我已经为时间创建了一些行和列,但是当我插入新数据时,它会用空单元格填充并在下面插入,而不是进入现有单元格。感谢任何帮助。
string PathConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtPath.Text + ";Extended Properties=\"Excel 8.0; HDR = Yes;\";";
OleDbConnection MyConnection = new OleDbConnection(PathConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", MyConnection);
DataTable dt = new DataTable();
dt.Columns.Add("Time");
DataRow dr = dt.NewRow();
dr["Time"] = "9:00";
dt.Rows.Add(dr);
DataRow dr1 = dt.NewRow();
dr1["Time"] = "10:00";
dt.Rows.Add(dr1);
`etc`
myDataAdapter.Fill(dt);
DataGridView1.DataSource = dt;
不清楚您要达到什么目的。关于发布的代码,您是正确的,table 的前两行将具有“空”单元格,但第一列具有“9:00 和 10:00”值。此外,前两行之后的第一列中将有“空”单元格。这是因为您正在为“时间”值添加列和行“之前”您正在用数据填充它。
我建议您先添加数据,然后再添加“时间”列。然后,不要为时间值“添加”新行……使用读取原始数据时的“现有”行。
示例:首先用数据填充 table... myDataAdapter.Fill(dt);
... 然后将“时间”列添加为现有 table 中的第一列。它可能看起来像……
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", MyConnection);
DataTable dt = new DataTable();
myDataAdapter.Fill(dt);
DataColumn timeCol = new DataColumn("Time", typeof(string));
dt.Columns.Add(timeCol);
timeCol.SetOrdinal(0);
dt.Rows[0].SetField("Time", "9:00");
dt.Rows[1].SetField("Time", "10:00");
dataGridView1.DataSource = dt;
您好,我才刚刚开始创建考试安排系统,在将 Excel table 插入我的数据网格视图时遇到问题。我已经为时间创建了一些行和列,但是当我插入新数据时,它会用空单元格填充并在下面插入,而不是进入现有单元格。感谢任何帮助。
string PathConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtPath.Text + ";Extended Properties=\"Excel 8.0; HDR = Yes;\";";
OleDbConnection MyConnection = new OleDbConnection(PathConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", MyConnection);
DataTable dt = new DataTable();
dt.Columns.Add("Time");
DataRow dr = dt.NewRow();
dr["Time"] = "9:00";
dt.Rows.Add(dr);
DataRow dr1 = dt.NewRow();
dr1["Time"] = "10:00";
dt.Rows.Add(dr1);
`etc`
myDataAdapter.Fill(dt);
DataGridView1.DataSource = dt;
不清楚您要达到什么目的。关于发布的代码,您是正确的,table 的前两行将具有“空”单元格,但第一列具有“9:00 和 10:00”值。此外,前两行之后的第一列中将有“空”单元格。这是因为您正在为“时间”值添加列和行“之前”您正在用数据填充它。
我建议您先添加数据,然后再添加“时间”列。然后,不要为时间值“添加”新行……使用读取原始数据时的“现有”行。
示例:首先用数据填充 table... myDataAdapter.Fill(dt);
... 然后将“时间”列添加为现有 table 中的第一列。它可能看起来像……
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", MyConnection);
DataTable dt = new DataTable();
myDataAdapter.Fill(dt);
DataColumn timeCol = new DataColumn("Time", typeof(string));
dt.Columns.Add(timeCol);
timeCol.SetOrdinal(0);
dt.Rows[0].SetField("Time", "9:00");
dt.Rows[1].SetField("Time", "10:00");
dataGridView1.DataSource = dt;