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

时间:2017-12-06 15:03:06

标签: c# excel vba oledb oledbconnection

尝试插入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());
        }

运行此代码后,将抛出异常并捕获此错误消息:

  

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

我正在使用Microsoft Excel 2010

2 个答案:

答案 0 :(得分:2)

从connectionstring中删除IMEX = 1。还要确保该文件不是只读的,并且当前未在Excel中打开

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

答案 1 :(得分:1)

如果您没有写入写入权限,则在文件夹中存储访问数据库或Excel文档时会发生此错误。您可以阅读该文件,但您无法对其进行更改。

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

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

enter image description here