Angular 19 有什么新功能?
**TL;DR:**让我们看看如何使用 C# 中的 Syncfusion Excel 库来管理 Excel 中的公式。本指南涵盖了创建、读取和计算公式,并利用命名范围和跨工作表引用等高级功能。
Syncfusion Excel 库 (XlsIO) 是一款功能强大的工具,可让开发人员以编程方式创建、操作和管理 Excel 文件。它提供了全面的公式处理功能,允许在 Excel 中执行读取、写入和计算公式等高级操作。它支持 400 多个 Excel 内置函数,使用户可以不受限制地创建公式。
在此博客中,我们将探讨如何使用 C# 中的 Syncfusion Excel 库在 Excel 中读取、编写和计算公式。
入门
步骤 1:在 Excel 中创建公式
Excel 中的公式是通过在单元格中插入表达式来创建的,这些表达式根据单元格的内容、其他单元格引用或预定义的 Excel 函数执行计算。
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
IWorkbook workbook = application.Workbooks.Create(1);
IWorksheet sheet = workbook.Worksheets[0];
//Set values to the cells.
sheet.Range["A1"].Number = 10;
sheet.Range["B1"].Number = 20;
//Set formula in the cell.
sheet.Range["C1"].Formula = "=SUM(A1,B1)";
//Saving the workbook as stream.
FileStream stream = new FileStream("Formula.xlsx", FileMode.Create, FileAccess.ReadWrite);
workbook.SaveAs(stream);
stream.Dispose();
}执行提供的代码示例后,输出文档将类似于下图。
第 2 步:阅读公式
在 Excel 中读取公式需要从单元格中检索以字符串形式存储的公式表达式。这可以使用 IRange 接口的 Formula 属性来完成。
请参阅以下代码示例。
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
FileStream fileStream = new FileStream("Sample.xlsx",FileMode.Open,FileAccess.Read);
IWorkbook workbook = application.Workbooks.Open(fileStream);
IWorksheet sheet = workbook.Worksheets[0];
//Returns the formula in C1 style notation.
string formula = sheet["C1"].Formula;
//Dispose stream.
fileStream.Dispose();
}步骤 3:计算公式
要在 Excel 工作簿中执行计算,必须调用 IWorksheet 的 EnableSheetCalculations 方法。此方法初始化 **CalcEngine** 对象并确保工作表中的公式得到正确计算。
访问计算值涉及在启用工作表计算后在 Excel 工作表中评估公式。此过程将公式的计算值作为字符串返回,为用户提供计算结果。
请参阅以下代码示例来从单元格访问计算值。
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
FileStream fileStream = new FileStream("Sample.xlsx", FileMode.Open, FileAccess.Read);
IWorkbook workbook = application.Workbooks.Open(fileStream, ExcelOpenType.Automatic);
IWorksheet sheet = workbook.Worksheets[0];
sheet.EnableSheetCalculations();
//Returns the calculated value of a formula using the most current inputs.
string calculatedValue = sheet["C1"].CalculatedValue;
sheet.DisableSheetCalculations();
//Saving the workbook as stream.
FileStream stream = new FileStream("Formula.xlsx", FileMode.Create, FileAccess.ReadWrite);
workbook.SaveAs(stream);
stream.Dispose();
}在公式中使用命名范围
Excel 中的命名范围或定义名称允许您为工作表中的单元格或单元格范围分配名称。它们可用于公式中以引用单元格或单元格范围。命名范围可跨工作表访问,并帮助我们创建公式而无需明确提供单元格范围。
请参阅以下代码示例,向 Excel 工作表添加命名范围。
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
IWorkbook workbook = application.Workbooks.Create(1);
IWorksheet sheet = workbook.Worksheets[0];
//Defining a name in the workbook level for cell A1.
IName name1 = workbook.Names.Add("One");
name1.RefersToRange = sheet.Range["A1"];
//Defining a name in the workbook level for cell B1.
IName name2 = workbook.Names.Add("Two");
name2.RefersToRange = sheet.Range["B1"];
//Formula using defined names.
sheet.Range["C1"].Formula = "=SUM(One,Two)";
//Saving the workbook as a stream.
FileStream stream = new FileStream("Formula.xlsx", FileMode.Create, FileAccess.ReadWrite);
workbook.SaveAs(stream);
stream.Dispose();
}运行上述代码示例后,输出文档将如下图所示。

创建跨工作表引用
跨工作表引用允许公式使用同一工作簿中多个工作表的数据。
请参阅以下代码示例。
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
IWorkbook workbook = application.Workbooks.Create();
IWorksheet sheet = workbook.Worksheets[0];
//Setting formula for the range with cross-sheet reference.
sheet.Range["C2"].Formula = "=SUM(Sheet2!B2,Sheet1!A2)";
//Saving the workbook as stream.
FileStream stream = new FileStream("Formula.xlsx", FileMode.Create, FileAccess.ReadWrite);
workbook.SaveAs(stream);
stream.Dispose();
}