gpt4 book ai didi

c# - 无法使用 LINQ 修改 Excel 文件

转载 作者:行者123 更新时间:2023-11-30 23:32:49 25 4
gpt4 key购买 nike

我有一个 winform 应用程序,我在其中读取 XML 发票,获取它的订单号,然后将其插入到一个 Excel 文件中,该文件之前加载了发票列表(一种在本地跟踪它们的方法)更新行。

我曾经为 97-2003 工作表做过这件事,效果很好。但由于我们的用户更喜欢使用 2013 Worksheets,我开始着手修改连接字符串以使用它。

我还必须安装 Office System 驱动程序:Data Connectivity Components 2007,以便它可以与 Microsoft.ACE.OLEDB.12.0

一起使用

当我运行它时,出现以下异常:

System.Data.OleDb.OleDbExeption (0x80004005): The Microsoft Office Access database engine stopped the process because you and another user are attempting to change the same data at the same time.

这很奇怪,因为我目前在本地工作。目前只有两个用户使用这个应用程序,他们可以通过共享文件来使用它。

我对此有点困惑,我一直在阅读有关这方面的更多信息,但我没有成功,当我只是寻找异常结果时说它是关于未找到 文件。当我查找异常文本时,我没有得到针对我的特定案例的结果。

我调试了代码,但没有得到太多信息,因为在遇到异常之前一切正常。这基本上就是我在 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();

最佳答案

当我在调试过程中遇到此错误或类似错误时,我有一个软假设,即我是在孤立地工作(即因为它都是本地的,所以我是唯一积极处理工件/数据等的“用户”) ,问题通常最终是 我也是错误消息所提示的“其他用户”

当我在 DEBUG | 的调试周期中工作时,很容易无意中让我的代码实例仍在执行。测试 |停止调试。代码的孤立实例很可能仍然锁定各种资源,从而导致您描述的问题。

检查 Windows TaskManager 以查看您的代码/调试 session 是否可能存在一个或多个孤立实例。终止孤立任务,您开始的下一个 DEBUG 执行现在应该能够干净地执行。

关于c# - 无法使用 LINQ 修改 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34162639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com