2017-02-10 125 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

相关问题