2017-02-10 82 views
2

我讀過Microsoft.Office.Interop.Excel是在Excel中替換公式的最簡單的方法,但它需要安裝Office。由於我需要在Windows Server(2008或2012)上進行部署,因此我正在尋找使用EPPlus來完成該操作的最佳和/或最簡單的方法。使用EPPlus庫來替換公式在Excel中它們的值

添加配方已有詳細記錄,例如,

currentWorksheet.Cells["C4"].Formula = "SUM(C2:C3)"; 

但我找不到任何使用等效值替換公式的整個工作表的示例。基本上是複製,然後是Excel中的選擇性粘貼選項。

回答

3

我不認爲在Epplus中內置任何類型的函數都可以爲你做到這一點。但是,您可以利用WorksheetCells集合僅包含具有內容的單元格的條目。所以像這樣的東西不應該太痛苦的表現明智:

currentWorksheet.Cells["C2"].Value = 5; 
currentWorksheet.Cells["C3"].Value = 15; 
currentWorksheet.Cells["C4"].Formula = "SUM(C2:C3)"; 

currentWorksheet.Cells["D2"].Value = 15; 
currentWorksheet.Cells["D3"].Value = 25; 
currentWorksheet.Cells["D4"].Formula = "SUM(D2:D3)"; 

//Calculate the formulas and the overwrite them with their values 
currentWorksheet.Cells.Calculate(); 
foreach (var cell in currentWorksheet.Cells.Where(cell => cell.Formula != null)) 
    cell.Value = cell.Value; 
+0

Thx厄尼。奇怪的事情正在發生。當我用一個簡單的文件(2張和一個公式)測試它時,一切正常。然後,當我嘗試將其應用於我的工作文件時,出現InvalidOperationException錯誤(錯誤保存文件)。 –

+0

@CrnaKrv這是一個艱難的。它可能超出了Epplus可以處理的東西,因爲原始文件可能是由excel本身生成的。如果你能夠拉入Epplus的源代碼並進行調試。 – Ernie

+0

如果目的是用它的計算值代替公式,我猜你應該在你調用Calculate()後將_cell.Value = cell.Value_更改爲_cell.Formula = string.Empty_ InvalidOperationException很難,因爲Earnie說,但其中一個可能的原因可能是EPPlus試圖保存的工作簿由另一個程序/進程(例如Excel)打開。 – swmal

相關問題