2012-06-19 30 views
0

我已經嘗試了幾個我在這裏看到的解決方案,但是在編寫Excel文件時仍然有問題。寫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(); 

Eventualy中,使用塊關閉之前,我有

 connection.Close(); 
    } 

在這一點上,似乎我的應用程序掛在Excel文件上。如果我嘗試手動或通過System.Diagnostics.Process打開它,我會得到「文件被鎖定以供其他用戶進行編輯」,即使我回答「確定」,我仍然只能看到空白模板。

當我實際退出我的應用程序時,Excel文件似乎是完整且可訪問的。顯然,關閉連接並不足以清除緩衝區並釋放文件。

我想知道的是如何釋放我對文件的保留,以便我實際上可以讓我的應用程序爲用戶提供使用Process打開文件的機會,或者如果他更喜歡手動打開文件。

+0

嘗試使用FileStream.Unlock方法檢查此鏈接http://msdn.microsoft.com/en-us/library/system.io.filestream.unlock%28v=vs.100%29.aspx – MMK

回答

0

我發現EPPlus,它易於使用,根本不打開Excel,所以這解決了鎖定問題。這實際上並沒有回答這個問題,但這是一個可接受的解決方法,尤其是因爲寫入EPPlus比通過OLEDB寫入Excel要容易得多。

相關問題