【问题标题】:Excel: Insert query throws error message "Operation must use an updateable query"Excel:插入查询引发错误消息“操作必须使用可更新查询”
【发布时间】:2017-12-06 15:03:05
【问题描述】:

尝试插入 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

【问题讨论】:

    标签: c# excel vba oledb oledbconnection


    【解决方案1】:

    从连接字符串中删除 IMEX=1。还要确保文件不是只读的,并且当前没有在 Excel 中打开

    对于它的价值,我建议使用 EPPlus 库之类的东西来读写 xlsx 文件,而不是 Access db 驱动程序

    【讨论】:

    • Plus 1 用于使用 EPPlus。使用 Oledb 需要在 64 位客户端计算机上安装驱动程序,并且这种行为非常不可预测且容易出错。
    • 删除IMEX=1后,错误依旧存在,而且之前使用EPPlus我从来没有使用过,你能推荐从哪里开始吗?我已经通过 NuGet Manager 安装了 EPPlus
    • 类似这样的内容将是一个很好的起点:github.com/JanKallman/EPPlus/wiki/Getting-Started(这是 eppluss 的 wiki/教程,由 epplus 的作者编写)
    • 我想我找到了问题,我能够使用 epplus 插入数据,但是当我查看原始问题时,我相信问题出现了,因为我正在从 Excel 文件中读取数据来做某些任务,然后在完成后写回该 excel 文件。我认为发生错误是因为 Excel 文件仍然打开或正在读取,并且在发生这种情况时无法更新或插入。你知道解决方法吗?
    • 如果您使用访问驱动程序进行读取和写入,并且没有打开多个连接,这似乎不合逻辑..您可以随意使用您的代码,但访问驱动程序是一个令人头疼的捷径
    【解决方案2】:

    当您没有写入权限的情况下,Access 数据库或 Excel 文档存储在文件夹中时会发生此错误。您可以读取该文件,但无法对其进行更改。

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

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

    【讨论】:

    • 对于用户,他们有完整的修改和写入权限,错误仍然出现
    猜你喜欢
    • 1970-01-01
    • 2011-06-29
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2010-09-15
    相关资源
    最近更新 更多