【问题标题】:How to insert Excel Data into existing table in C#如何在 C# 中将 Excel 数据插入现有表中
【发布时间】:2019-11-15 18:47:16
【问题描述】:

您好,我刚刚开始创建考试安排系统,在将 Excel 表格插入我的数据网格视图时遇到了问题。我已经创建了一些行和列,但是当我插入新数据时,它会用空单元格填充并在下面插入,而不是进入现有的单元格。任何帮助表示赞赏。

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;

【问题讨论】:

    标签: c# excel datagridview datagridviewcolumn


    【解决方案1】:

    目前尚不清楚您要达到的目标。参考发布的代码,您是正确的,该表的前两行将具有“空”单元格,但第一列的“9:00 和 10:00”值除外。此外,在前两行之后的第一列中会有“空”单元格。这是因为您正在为“时间”值“之前”添加列和行,您正在用数据填充它。

    我建议您先添加数据,然后添加“时间”列。然后,不要为时间值“添加”新行……使用读取原始数据时存在的“现有”行。

    示例:首先用数据填充表格...myDataAdapter.Fill(dt);...然后添加“时间”列作为现有表格的第一列。它可能看起来像……

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 2012-08-24
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多