C# NPOI计算Execl里面的公式
我这里分两种情况处理
1.Execl中表格中存在公式,我们通过公式获取数据
我们通过Npoi,获取列的属性:
private static object GetValueType(ICell cell)
{
if (cell == null)
return null;
switch (cell.CellType)
{
case CellType.Blank:
return null;
case CellType.Boolean:
return cell.BooleanCellValue;
case CellType.Numeric:
return cell.NumericCellValue;
case CellType.String:
return cell.StringCellValue;
case CellType.Error:
return cell.ErrorCellValue;
case CellType.Formula:
return cell.NumericCellValue;
default:
return "=" + cell.CellFormula;
}
}
我们在获取Execl的文件对象的之后,通过Npoi组件获取任意Sheet下面的Row和Cell,我们在获取Cell,我们可以通关上面的这个方法,判断其类型,然后获取其结果!
2.Execl中表格中不存在公式,我们自定义的公式添加到表格,那该如何计算?
比如如下,一开始我们不去设置公式:
ICell cell = sheet.GetRow(i).GetCell(j);
//自定义公式
string Formula= "SUM(B2:B7)";
//给列设置公式
cell.SetCellFormula(Formula);
//这个很重要,在Execl创建公式
workbook.GetCreationHelper().CreateFormulaEvaluator().EvaluateFormulaCell(cell);
//获取其值
GetValueType(sheet.GetRow(i).GetCell(j));
3.总结:
- 如果Execl有公式,我们获取公式的值,可以直接通过获取其类型,然后取其值
- 如果Execl没有公式,我自定义公式,想实现自定义公式,我们需要三个步骤:
- 定义公式: string ss = "SUM(B2:B7)";
- 给指定cell设置公式:cell.SetCellFormula(ss);
- 在Execl中创建公式:workbook.GetCreationHelper().CreateFormulaEvaluator().EvaluateFormulaCell(cell);
- 通过类型获取其值:GetValueType(cell)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?