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。
我已经在谷歌上搜索了这个错误,但找不到任何符合我确切要求的内容。
谢谢,
达伦。
只有当适配器知道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);
...