我已经尝试过我在这里看到的几个解决方案,但是在编写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为他打开文件或者如果他更喜欢手动打开它。
答案 0 :(得分:0)
我找到了EPPlus,它易于使用,根本不打开Excel,因此解决了锁定问题。这实际上并没有回答这个问题,但这是一种可接受的解决方法,特别是因为写入EPPlus比通过OLEDB写入Excel要容易得多。