不能调用从EPPlus计算方法使用C#
我有一个公式的单元格,我需要调用Calculate()方法来获得结果。
不知何故,我cannet调用我的表中的任何单元格上的计算方法,我错过了什么?
我正在使用EPPlus版本4.0.5.0。 我的代码如下:
ws2.Cells[failedRow, failedColumn + 1].Formula = "SUM(B20:B" + (failedRow - 1) + ")";
我需要在同一个单元上计算。 有任何想法吗?
修改我的回答基于@斯特沃特提到他们添加的公式计算。
我再次尝试,似乎工作。 所以,Jesper,在你的情况下, cell.Calculate()
应该为你做。 我试过这个:
public void Formula_Calc_Test() { var datatable = new DataTable("tblData"); datatable.Columns.AddRange(new[] {new DataColumn("Col1", typeof (int)), new DataColumn("Col2", typeof (int))}); for (var i = 0; i < 10; i++) { var row = datatable.NewRow(); row[0] = i; row[1] = i * 10; datatable.Rows.Add(row); } using (var pck = new ExcelPackage()) { var workbook = pck.Workbook; var worksheet = workbook.Worksheets.Add("Sheet1"); var cells = worksheet.Cells; cells.LoadFromDataTable(datatable, true); var failedRow = 11; cells["C1"].Formula = "SUM(B2:B" + (failedRow - 1) + ")"; cells["C1"].Calculate(); Console.WriteLine(cells["C1"].Value); } }
并且在输出中获得了360
。
XlsIO是一个读取和写入Excel 2003/2007/2010/2013/2016文件的.NET库。 使用XlsIO ,您可以非常容易地计算单元格的公式。 如果您符合条件,整套控件都可以通过社区许可证程序免费获得(商业应用程序)。 社区许可证是完整的产品,没有限制或水印。
步骤1:创build控制台应用程序步骤2:添加对Syncfusion.XlsIO.Base和Syncfusion.Compression.Base的引用; 您也可以使用NuGet将这些引用添加到您的项目中。 第3步:复制并粘贴以下代码片段。
以下代码片段说明如何使用XlsIO计算单元格中的公式值
using (ExcelEngine excelEngine = new ExcelEngine()) { IApplication application = excelEngine.Excel; application.DefaultVersion = ExcelVersion.Excel2013; IWorkbook workbook = application.Workbooks.Create(1); IWorksheet sheet = workbook.Worksheets[0]; //Setting values to the cells sheet.Range["A1"].Number = 10; sheet.Range["B1"].Number = 10; //Setting formula in the cell sheet.Range["C1"].Formula = "=SUM(A1,B1)"; // Enabling CalcEngine for computing the formula sheet.EnableSheetCalculations(); string computedValue = sheet.Range["C1"].CalculatedValue; workbook.SaveAs("Formula.xlsx"); // Disabling the CalcEngine sheet.DisableSheetCalculations(); }
有关XlsIO的更多信息,请参阅我们的帮助文档
注意:我为Syncfusion工作