我正在使用以下代码来更新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
。 - 退出应用程序。
为什么当我再次尝试连接时,连接应该已经不存在了,却会收到此错误?