无法使用 C# 从 EPPlus 调用计算方法
Cant invoke Calculate method from EPPlus using C#
我有一个带有公式的单元格,我需要对其调用 Calculate() 方法以获得结果。
我无法在 sheet 中的任何单元格上调用 Calculate 方法,我错过了什么?
我使用的是 EPPlus 版本 4.0.5.0。
我的代码如下:
ws2.Cells[failedRow, failedColumn + 1].Formula = "SUM(B20:B" + (failedRow - 1) + ")";
我需要在同一个单元格上进行计算。有什么想法吗?
根据@Stewart 提到他们添加的公式计算修改我的答案。
我又试了一次,似乎确实有效。所以,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 is a .NET library that reads and writes Excel 2003/2007/2010/2013/2016 files. Using XlsIO, you can calculated the formula of the cell very easily. The whole suite of controls is available for free (commercial applications also) through the community license program 如果您符合条件。社区许可证是没有限制或水印的完整产品。
第 1 步:创建控制台应用程序
第 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 的更多信息,请参阅我们的 help documentation
注意:我为 Syncfusion 工作
我有一个带有公式的单元格,我需要对其调用 Calculate() 方法以获得结果。
我无法在 sheet 中的任何单元格上调用 Calculate 方法,我错过了什么?
我使用的是 EPPlus 版本 4.0.5.0。 我的代码如下:
ws2.Cells[failedRow, failedColumn + 1].Formula = "SUM(B20:B" + (failedRow - 1) + ")";
我需要在同一个单元格上进行计算。有什么想法吗?
根据@Stewart 提到他们添加的公式计算修改我的答案。
我又试了一次,似乎确实有效。所以,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 is a .NET library that reads and writes Excel 2003/2007/2010/2013/2016 files. Using XlsIO, you can calculated the formula of the cell very easily. The whole suite of controls is available for free (commercial applications also) through the community license program 如果您符合条件。社区许可证是没有限制或水印的完整产品。
第 1 步:创建控制台应用程序 第 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 的更多信息,请参阅我们的 help documentation
注意:我为 Syncfusion 工作