C# OleDBConnection Excel

本文关键字:Excel OleDBConnection | 更新日期: 2023-09-27 17:50:03

从这个问题开始c# OLEDBConnection to Excel

我使用OLEdbCommandBuilder有问题。我有这样的代码:

 DataTable dt = new DataTable();
            OleDbCommand command = new OleDbCommand();
            command = new OleDbCommand("Select * from [working sheet$]", oleDBConnection);
            OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
            dataAdapter.SelectCommand = command;
            OleDbCommandBuilder c = new OleDbCommandBuilder(dataAdapter);
            dataAdapter.Fill(dt);
            //arbitrary changed datatable
            dt.Rows[2][3] = "dfd";
            c.GetUpdateCommand();
            dataAdapter.Update(dt);
            oleDBConnection.Close();

然而,当我运行它时,我得到这个错误:

Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.

如何使用更新的行/单元格信息更新Excel工作表?我以前从来没有这样用过Excel。

我已经在谷歌上搜索了这个错误,但找不到任何符合我确切要求的内容。

谢谢,

达伦。

C# OleDBConnection Excel

只有当适配器知道excel-database-table的唯一主键时,才能进行更新。你可以在excel中添加id-column作为第一列,并使其为主键,像这样继续

      ...
      dataAdapter.Fill(dt);
      ...
      System.Data.DataColumn pkCol = dt.Columns[0]; // something like dt.Columns["Id"]
      pkCol.Unique = true;
      dt.PrimaryKey = new DataColumn[] {pkCol };
      ...
      OleDbCommandBuilder c = new OleDbCommandBuilder(dataAdapter);
      ...