c# - 为什么在多次更新 Excel 单元格时会出现 OleDbException?

标签 c# excel exception oledb

我正在使用以下代码更新 Excel 文件中的单元格。

public bool WriteChange(string Filename, string SheetName, string Cell, string Value)
{
    if(!System.IO.File.Exists(Filename))
    {
        throw new System.IO.FileNotFoundException("File \"" + Filename + "\" could not be found");
    }
    bool result = false;
    string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Filename + ";Mode=ReadWrite;Extended Properties=\"Excel 8.0;HDR=NO;\"";
    string SQL = "UPDATE [" + SheetName + Cell + ":" + Cell + "] SET F1='" + Value + "'";

    using(OleDbConnection Connection = new OleDbConnection(ConnectionString))
    {
        Connection.Open();
        using(OleDbCommand cmd = new OleDbCommand(SQL,Connection))
        {
            int value = cmd.ExecuteNonQuery();
            if(value > 0)
            {
                result = true;
            }
        }
    }
    return result;
}

这很好用,除非我尝试多次更新同一个单元格。一旦使用此函数更新了一个单元格,它就不能再次使用此函数进行更新。如果我再次尝试更新单元格;即使在重新启动应用程序后,我仍收到 OleDbException: System Resource Exceeded

我知道如果您正在创建一堆到电子表格的连接(例如在一个循环中),您通常会收到此异常,但我每次应用程序运行只连接一次。典型的工作流程是。

  • 开始申请。
  • 调用WriteChange
  • 退出应用程序。

为什么我会收到此错误,当我尝试再次连接时连接应该早已失效?

最佳答案

使用下面的连接字符串,因为Microsoft.Jet.OLEDB.4.0有这个错误。

string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @Filename + ";Extended Properties=\"Excel 12.0;HDR=No;\"";

关于c# - 为什么在多次更新 Excel 单元格时会出现 OleDbException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10318173/

相关文章:

c# - 遍历数据表并删除行

excel - SSIS仅从全名中提取名字

file - 如何使用 vba 在具有通用名称的文件中打开某些 excel 文件夹

c# - For循环和Foreach连续循环?

java - 打印Java异常中的所有变量?

java - "precise rethrow"与最终异常的关系

c# - 将本地 ASP.NET 应用程序发布到 Azure 后无法登录

c# - 如何使用 ViewModel 中的 bool 属性启用/禁用附加行为

c# - 从单个 DataTable 对象中的存储过程返回多个结果集

java - 拦截异常