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

C# Excel:插入查询引发错误消息“操作必须使用可更新的查询”,c#,excel,vba,oledb,oledbconnection,C#,Excel,Vba,Oledb,Oledbconnection,尝试插入Excel工作表时遇到错误 这是我的Excel工作表Sheet1的布局: id name 1 test 2 apple 3 pear 我想将此数据插入Excel工作表: 4 pineapple 下面是我的代码: try{ string srcExcel = "C:\\Users\\Desktop\\insertTest.xlsx"; System

尝试插入Excel工作表时遇到错误

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

     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从连接字符串中删除IMEX=1。还要确保文件不是只读的,并且当前未在Excel中打开


值得一提的是,我建议使用类似EPPlus库的东西来读写xlsx文件,而不是Access db驱动程序,从connectionstring中删除IMEX=1。还要确保文件不是只读的,并且当前未在Excel中打开


值得一提的是,我建议您使用类似EPPlus库的东西来读写xlsx文件,而不是Access db驱动程序。如果您没有写访问权限,则当Access数据库或excel文档存储在文件夹中时,会发生此错误。您可以读取该文件,但无法对其进行更改

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

通过在“文件属性”的“安全”选项卡下检查您是否具有访问权限,可以确认Windows上的写入权限


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

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

通过在“文件属性”的“安全”选项卡下检查您是否具有访问权限,可以确认Windows上的写入权限


使用EPPlus时加1。使用Oledb需要在64位客户端计算机上安装驱动程序,并且这种行为非常不可预测且容易出错。删除IMEX=1后,错误仍然存在,对于使用EPPlus,我以前从未使用过它,您能推荐从何处开始吗?我已经通过NuGet Manager安装了EPPlus这样的东西将是一个很好的起点:这是EPPlus的wiki/教程,由EPPlus的作者编写。我想我发现了这个问题,我能够使用EPPlus插入数据,但当我看到原始问题时,我认为问题的出现是因为我从Excel文件中读取数据来完成某些任务,然后在完成后写回该Excel文件。我认为发生此错误是因为Excel文件仍处于打开状态或正在读取状态,并且在此期间无法更新或插入。如果您使用access驱动程序进行读写操作,并且没有打开多个连接,那么这似乎不符合逻辑。。您可以随心所欲地使用代码,但access驱动程序是使用EPPlus的headachesPlus 1的快捷方式。使用Oledb需要在64位客户端计算机上安装驱动程序,并且这种行为非常不可预测且容易出错。删除IMEX=1后,错误仍然存在,对于使用EPPlus,我以前从未使用过它,您能推荐从何处开始吗?我已经通过NuGet Manager安装了EPPlus这样的东西将是一个很好的起点:这是EPPlus的wiki/教程,由EPPlus的作者编写。我想我发现了这个问题,我能够使用EPPlus插入数据,但当我看到原始问题时,我认为问题的出现是因为我从Excel文件中读取数据来完成某些任务,然后在完成后写回该Excel文件。我认为发生此错误是因为Excel文件仍处于打开状态或正在读取状态,并且在此期间无法更新或插入。如果您使用access驱动程序进行读写操作,并且没有打开多个连接,那么这似乎不符合逻辑。。您可以随意使用代码,但access driver是用户头部的快捷方式。对于用户,他们具有完全的修改和写入权限,错误仍然会发生。对于用户,他们具有完全的修改和写入权限,错误仍然会发生