0

我已经尝试了几种我在这里看到的解决方案,但在编写 Excel 文件时仍然遇到问题。

我有一个模板 xlsx 文件,我最初将其复制到工作文件中以开始使用。然后我有一个这样的块

    using (var connection = new OleDbConnection(string.Format(
        "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Mode=ReadWrite;Extended Properties=\"Excel 12.0;HDR=YES\";",
        outputfileName)))
    {
        connection.Open();
        var command = connection.CreateCommand();

紧随其后的是一系列

command.ExecuteNonQuery();

最终,在 using 块关闭之前,我有

        connection.Close( );
    }

此时,我的应用程序似乎挂在 Excel 文件上。如果我尝试手动或通过打开它System.Diagnostics.Process,我会得到“文件被锁定以供'另一个用户'编辑”,即使我回答“确定”,我仍然只能看到空白模板。

当我真正退出我的应用程序时,Excel 文件似乎是完整且可访问的。显然,关闭连接不足以刷新缓冲区并释放文件。

我想了解的是如何释放我对文件的保留,以便我实际上可以让我的应用程序让用户有机会使用 Process 为他打开文件,或者如果他愿意,可以手动打开它。

4

1 回答 1

0

我找到了EPPlus,它好用而且根本不打开Excel,这样就解决了锁定问题。这实际上并不能回答问题,但它是一种可接受的解决方法,尤其是因为写入 EPPlus 比通过 OLEDB 写入 Excel 容易得多。

于 2012-06-25T12:52:54.990 回答