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