编写与其他用户有冲突的Excel文件

时间:2012-06-19 19:17:24

标签: excel c#-4.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();

最后,在使用块关闭之前,我有

        connection.Close( );
    }

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

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

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

1 个答案:

答案 0 :(得分:0)

我找到了EPPlus,它易于使用,根本不打开Excel,因此解决了锁定问题。这实际上并没有回答这个问题,但这是一种可接受的解决方法,特别是因为写入EPPlus比通过OLEDB写入Excel要容易得多。