2013-11-20 70 views
1

我使用EPPlus庫創建Excel文件。文件創建後,只要程序正在運行,它就不能被刪除或編輯,因爲它被稱爲「另一個用戶」使用。我找不到任何適合我的解決方案。使用EPPlus創建文件後鎖定文件

這裏是我的代碼:

 var newFile = new FileInfo(path); 
     using (var xlPackage = new ExcelPackage(newFile)) 
     { 
      var ws = xlPackage.Workbook.Worksheets.Add("Sheet1"); 
... 
      xlPackage.Save(); 
     } 
+0

在'...'裏面有一些代碼需要打開資源。你有'使用'包裝的'ExcelPackage';所以不是這樣。除非EPPlus庫中存在錯誤。 –

+0

在「...」我只是添加數據和一些樣式的單元格。它不可能。我懷疑圖書館有錯誤,但不知道是否有任何解決辦法。 –

回答

2

嘗試使用SaveAsFileStram,可以讀/寫;

using(var stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) 
using(var xlPackage = new ExcelPackage(stream)) 
{ 
    var ws = xlPackage.Workbook.Worksheets.Add("Sheet1"); 
    // ... 
    xlPackage.SaveAs(stream); 
} 
+0

不幸的是,這並沒有幫助...另外,excel文件現在被認爲是不可讀的。 –

+0

@DavidShochet:那麼錯誤仍然存​​在?快速測試工作,至少對我來說沒有錯誤。 –

+0

也許你的文件在執行結束後被釋放。但是我有我的代碼在一個服務中,所以要釋放這些文件,我需要重新啓動服務。此外,與以前不同,當我在嘗試打開文件後再次未鎖定文件時,我收到一條消息,指出該文件無法讀取,並且我希望恢復該文件。 –

1

我知道這是一個老的文章,但我只是碰到這種來到我發現一個解決方案,如果你是從一個數據表建立的電子表格。

數據表的處置已保存的文件即

dt.Dispose(); 

這個固定我的版本這個問題的

1

我使用Image類中類似的情景,不得不手工處理後的圖像與

img.Dispose(); 

不管img變量的範圍,我可以刪除代表img的文件。