Excel 工作表是一种拥有众多功能的电子表格,其中公式和函数无疑是其最关键的功能之一。公式和函数使用户能够对数据进行广泛的计算、统计和逻辑操作,使他们能够快速、准确地得出有意义的分析结论。本文将介绍如何使用 Spire.XLS for .NET 在 C# 和 VB.NET 环境中在 Excel 工作表中添加或读取公式和函数。
安装 Spire.XLS for .NET
首先,您需要添加 Spire.XLS for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.XLS
插入公式和函数到 Excel 工作表
Spire.XLS for .NET 提供的 Worksheet.Range[int row, int column].Formula 属性可用于向 Excel 工作表中的指定单元格添加公式或函数。添加公式和函数到 Excel 工作表地主要操作步骤如下:
- 创建一个 Workbook 的对象。
- 使用 Workbook.Worksheets[int index] 属性获取指定的工作表。
- 在单元格中写入数据并设置单元格格式。
- 使用 Worksheet.Range[int row, int column].Formula 属性将公式和函数添加到工作表的指定单元格中。
- 使用 Workbook.SaveToFile() 方法保存工作簿。
- C#
- VB.NET
using Spire.Xls;
using System;
namespace InsertFormulasAndFunctions
{
internal class Program
{
static void Main(string[] args)
{
//创建Workbook的对象
Workbook workbook = new Workbook();
//获取第一个工作表
Worksheet worksheet = workbook.Worksheets[0];
//声明两个变量:currentRow和currentFormula
int currentRow = 1;
String currentFormula = null;
//设置列宽
worksheet.SetColumnWidth(1, 32);
worksheet.SetColumnWidth(2, 16);
//写入内容到单元格
worksheet.Range[currentRow, 1].Value = "测试数据";
worksheet.Range[currentRow, 2].NumberValue = 1;
worksheet.Range[currentRow, 3].NumberValue = 2;
worksheet.Range[currentRow, 4].NumberValue = 3;
worksheet.Range[currentRow, 5].NumberValue = 4;
worksheet.Range[currentRow, 6].NumberValue = 5;
currentRow += 2;
worksheet.Range[currentRow, 1].Value = "公式或函数";
worksheet.Range[currentRow, 2].Value = "结果";
//设置单元格格式
CellRange range = worksheet.Range[currentRow, 1, currentRow, 2];
range.Style.Font.FontName = "黑体";
range.Style.KnownColor = ExcelColors.LightGreen;
range.Style.FillPattern = ExcelPatternType.Solid;
range.Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Medium;
range.Style.Font.IsBold = true;
//数学运算
currentFormula = "=1/2+3*4";
worksheet.Range[++currentRow, 1].Text = "'" + currentFormula;
worksheet.Range[currentRow, 2].Formula = currentFormula;
//日期函数
currentFormula = "=TODAY()";
worksheet.Range[++currentRow, 1].Text = "'" + currentFormula;
worksheet.Range[currentRow, 2].Formula = currentFormula;
worksheet.Range[currentRow, 2].Style.NumberFormat = "YYYY/MM/DD";
//三角函数
currentFormula = "=SIN(PI()/6)";
worksheet.Range[++currentRow, 1].Text = "'" + currentFormula;
worksheet.Range[currentRow, 2].Formula = currentFormula;
//平均值函数
currentFormula = "=AVERAGE(B1:F1)";
worksheet.Range[++currentRow, 1].Text = "'" + currentFormula;
worksheet.Range[currentRow, 2].Formula = currentFormula;
//求和函数
currentFormula = "=SUM(B1:F1)";
worksheet.Range[++currentRow, 1].Text = "'" + currentFormula;
worksheet.Range[currentRow, 2].Formula = currentFormula;
//保存工作簿
workbook.SaveToFile("添加公式和函数.xlsx", FileFormat.Version2013);
}
}
}
Imports Spire.Xls
Imports System
Namespace InsertFormulasAndFunctions
Friend Class Program
Shared Sub Main(ByVal args() As String)
'创建Workbook的对象
Dim workbook As Workbook = New Workbook()
'获取第一个工作表
Dim worksheet As Worksheet = workbook.Worksheets(0)
'声明两个变量:currentRow和currentFormula
Dim currentRow As Integer = 1
Dim currentFormula As String = Nothing
'设置列宽
worksheet.SetColumnWidth(1, 32)
worksheet.SetColumnWidth(2, 16)
'写入内容到单元格
worksheet.Range(currentRow, 1).Value = "测试数据"
worksheet.Range(currentRow, 2).NumberValue = 1
worksheet.Range(currentRow, 3).NumberValue = 2
worksheet.Range(currentRow, 4).NumberValue = 3
worksheet.Range(currentRow, 5).NumberValue = 4
worksheet.Range(currentRow, 6).NumberValue = 5
currentRow += 2
worksheet.Range(currentRow, 1).Value = "公式或函数"
worksheet.Range(currentRow, 2).Value = "结果"
'设置单元格格式
Dim range As CellRange = worksheet.Range(currentRow, 1, currentRow, 2)
range.Style.Font.FontName = "黑体"
range.Style.KnownColor = ExcelColors.LightGreen
range.Style.FillPattern = ExcelPatternType.Solid
range.Style.Borders(BordersLineType.EdgeBottom).LineStyle = LineStyleType.Medium
range.Style.Font.IsBold = True
'数学运算
currentFormula = "=1/2+3*4""'" + currentFormula
worksheet.Range(currentRow, 2).Formula = currentFormula
'日期函数
currentFormula = "=TODAY()""'" + currentFormula
worksheet.Range(currentRow, 2).Formula = currentFormula
worksheet.Range(currentRow, 2).Style.NumberFormat = "YYYY/MM/DD"
'三角函数
currentFormula = "=SIN(PI()/6)""'" + currentFormula
worksheet.Range(currentRow, 2).Formula = currentFormula
'平均值函数
currentFormula = "=AVERAGE(B1:F1)""'" + currentFormula
worksheet.Range(currentRow, 2).Formula = currentFormula
'求和函数
currentFormula = "=SUM(B1:F1)""'" + currentFormula
worksheet.Range(currentRow, 2).Formula = currentFormula
'保存工作簿
workbook.SaveToFile("添加公式和函数.xlsx", FileFormat.Version2013)
End Sub
End Class
End Namespace
读取 Excel 工作表中的公式和函数
要读取 Excel 工作表中的公式和函数,需要循环遍历工作表中的所有已使用单元格,之后利用 Cell.HasFormula 属性找到包含公式或函数的单元格,然后用 CellRange.Formula 属性获取这些单元格种的公式或函数。详细操作步骤如下:
- 创建一个 Workbook 的对象。
- 使用 Workbook.LoadFromFile() 方法载入 Excel 工作簿。
- 使用 Workbook.Worksheets[sheetIndex] 属性获取第一个工作表。
- 循环浏览工作表中的单元格。
- 使用 Cell.HasFormula 属性检测一个单元格是否包含公式或函数。如果有,则使用 CellRange.RangeAddressLocal 属性和 CellRange.Formula 属性获取单元格名及其中的公式或函数,并输出获取的内容。
- C#
- VB.NET
using Spire.Xls;
using System;
namespace ReadFormulasAndFuctions
{
internal class Program
{
static void Main(string[] args)
{
//创建一个Workbook的对象
Workbook workbook = new Workbook();
//载入Excel工作簿
workbook.LoadFromFile("添加公式和函数.xlsx");
//获取该工作簿的第一个工作表
Worksheet sheet = workbook.Worksheets[0];
//获取该工作表已使用的单元格范围
CellRange usedRange = sheet.AllocatedRange;
//循环遍历已使用的单元格
foreach (CellRange cell in usedRange)
{
//判断单元格是否有公式或函数
if (cell.HasFormula)
{
//获取单元格名
String cellname = cell.RangeAddressLocal;
//获取单元格中的公式或函数
String formula = cell.Formula;
//输出公式或函数
Console.WriteLine("单元格" + cellname + "包含:" + formula);
}
}
}
}
}
'Error: Converting Methods, Functions and Constructors
'Error: Converting If-Else-End If Blocks
Imports Spire.Xls
Imports System
Namespace ReadFormulasAndFuctions
Friend Class Program
Static void Main(String() args)
{
'创建一个Workbook的对象
Dim workbook As Workbook = New Workbook()
'载入Excel工作簿
workbook.LoadFromFile("添加公式和函数.xlsx")
'获取该工作簿的第一个工作表
Dim sheet As Worksheet = workbook.Worksheets(0)
'获取该工作表已使用的单元格范围
Dim usedRange As CellRange = sheet.AllocatedRange
'循环遍历已使用的单元格
Dim cell As CellRange
For Each cell In usedRange
'判断单元格是否有公式或函数
If (cell.HasFormula)
{
'获取单元格名
Dim cellname As String = cell.RangeAddressLocal
'获取单元格中的公式或函数
Dim formula As String = cell.Formula
'输出公式或函数
Console.WriteLine("单元格" + cellname + "包含:" + formula)
}
Next
}
End Class
End Namespace
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。