无法使用LINQ修改Excel文件

我有一个winform应用程序,在这里我读取一个XML发票,获取它的订单号,然后将它插入一个以前用发票清单(本地logging它们的方式)更新行的Excel文件中。

我曾经为97-2003工作表做,它工作得很好。 但是由于我们的用户更喜欢2013年的工作表,我开始修改连接string来处理它。

我还必须安装Office系统驱动程序:数据连接组件2007年,所以它可以与Microsoft.ACE.OLEDB.12.0

当我运行它时,我得到以下exception:

System.Data.OleDb.OleDbExeption(0x80004005):Microsoft Office Access数据库引擎停止进程,因为您和另一个用户正在尝试同时更改相同的数据。

我目前在当地工作,这很奇怪。 目前只有两个用户使用这个应用程序,他们能够通过共享文件来处理它。

我有点卡住了,我一直在阅读更多关于这方面的信息,但我没有成功,当我只是寻找exception结果说,这是关于一个未find的文件。 而当我寻找exception文本,我不能得到我的具体情况的结果。

我已经debugging了代码,但没有得到太多的信息,因为一切都运行良好,直到它遇到exception。 这基本上是我在一个MessageBox

任何人都知道为什么这可能会发生?

码:

  System.Data.OleDb.OleDbConnection MyConnection; System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand(); string sql = null; string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + "C:\\Users\\user\\Desktop\\file.xlsx;" + "Extended Properties=\"Excel 12.0;ReadOnly=False;HDR=Yes\";"; MyConnection = new System.Data.OleDb.OleDbConnection(connectionString); MyConnection.Open(); myCommand.Connection = MyConnection; sql = "Update [sheetname$] set OrderNumber= @order where Invoice= @invoice"; myCommand.Parameters.AddWithValue("@order", orderNumber); myCommand.Parameters.AddWithValue("@invoice", invoiceNumber); myCommand.CommandText = sql; myCommand.ExecuteNonQuery(); MyConnection.Close(); 

当我在debugging过程中遇到这个错误或类似的错误时,我有一个软件假设,我正在孤立地工作(即因为它全部是本地的,我是唯一的“用户”,积极处理工件/数据等),问题通常结果是我也是错误信息所抱怨的'其他用户'

当我正在debuggingDEBUG |的debugging周期时,很容易不经意地让我的代码的一个实例仍然执行 testing| 停止debugging。 代码的孤立实例可能仍然会locking各种资源,导致您所描述的问题。

检查Windows TaskManager以查看是否有可能有一个或多个您的代码/debugging会话的孤立实例。 杀死孤立的任务,下一次启动的DEBUG执行应该现在能够干净地执行。