Excel:插入查询会引发错误消息“操作必须使用可更新的查询”

试图插入到Excel工作表时,我遇到了一个错误

这是我的名为Sheet1的Excel工作表的布局:

id name 1 test 2 apple 3 pear 

我想将这些数据插入到Excel工作表中:

  4 pineapple 

这是我的代码如下:

 try{ string srcExcel = "C:\\Users\\Desktop\\insertTest.xlsx"; System.Data.OleDb.OleDbConnection MyConnection; System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand(); string sql = null; MyConnection = new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + srcExcel + "; Extended Properties = 'Excel 8.0;HDR=Yes;IMEX=1'"); MyConnection.Open(); myCommand.Connection = MyConnection; sql = "Insert Into [Sheet1$] (id,name) Values('4','pineapple')"; myCommand.CommandText = sql; myCommand.ExecuteNonQuery(); MessageBox.Show("Insert Success!"); MyConnection.Close(); } catch (Exception eInnerData) { MessageBox.Show("Method: getInnerData " + eInnerData.ToString()); } 

运行这段代码后,抛出一个exception,并捕获这个错误信息:

操作必须使用可更新的查询

我正在使用Microsoft Excel 2010

从连接string中删除IMEX = 1。 同时确保该文件不是只读的,也不是当前在Excel中打开的

对于它的价值,我build议读取和写入类似于EPPlus库的xlsx文件,而不是Access db驱动程序

如果访问数据库或Excel文档存储在文件夹中,您没有写入写入权限,则会发生此错误。 你可以阅读这个文件,但是你不能修改它。

请确保您有权访问此文件夹或以pipe理员身份运行您的程序。

您可以通过检查您有权访问文件属性的安全选项卡来确认Windows上的写入权限。

在这里输入图像说明