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)
C# NPOI计算Execl里面的公式的更多相关文章
- c#(NPOI)DataTable导出execl,execl(支持解析公式)导入DataTable
NPOI(C#)DataTable导出execl using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserMod ...
- 数据字典生成工具之旅(4):NPOI操作EXECL
这篇会介绍NPOI读写EXECL,读写EXECL的组件很多,可以使用微软自己的COM组件EXECL.exe读写,不过这种方式限制很大. 1:客户环境必须装Office(虽然现在机子上不装Office的 ...
- C# NPOI 导出Execl 工具类
NPOI 导出Execl 自己单独工具类 详见代码 using System; using System.Collections.Generic; using System.Linq; using S ...
- 算法进阶面试题06——实现LFU缓存算法、计算带括号的公式、介绍和实现跳表结构
接着第四课的内容,主要讲LFU.表达式计算和跳表 第一题 上一题实现了LRU缓存算法,LFU也是一个著名的缓存算法 自行了解之后实现LFU中的set 和 get 要求:两个方法的时间复杂度都为O(1) ...
- 利用JavaScript计算引擎进行字符串公式运算
1.通过js计算引擎计算(java自带) 2.计算公式除了支持基本的方法之外还支持简单js脚本分支计算 3.通过设定map传入参数 4.默认返回最后一个计算结果,如果需返回特定值,将变量补写在公式最后 ...
- fileupload NPOI导入EXECL数据
fileupload JS @section scripts{ <script src="~/Content/js/fileupload/vendor/jquery.ui.widget ...
- 使用max函数计算EXCEL个税公式
1.Max()函数是求括号内的数的最大值.2.其中,第一和第二个大括号{}内的数,相信作为财务的应该很清楚,就是个人所得税的缴税比例,以及速算个人应缴所得税的相关数据.3.在EXCEL中,使用{}表示 ...
- NPOI,导出Execl,压缩文件zip,发送Email
private void SendEmail(string emailAddress, string companyName,string proxy, string officer, DataTab ...
- 基于NPOI的Execl导入导出例子
源地址:http://bbs.csdn.net/topics/390830774
随机推荐
- PyQt5事件处理
事件介绍 事件的处理机制非常的复杂,属于PyQt底层的事,不必我们关心,学会使用就行.如果说事件是用来创建窗口,那么信号与槽就是用来对这个控件进行处理.事件属于低级的处理方式,信号与槽是高级的处理方式 ...
- Apache Tomcat目录结构与版本升级
升级原因: 由于当前操作系统内的tomcat版本过低,存在大量高中危漏洞,存在一定的安全隐患.如下图所示,使用绿盟扫描器进行扫描爆出大量漏洞. 升级思路: 既然决定要升级,那么我觉得首先要做的就是自己 ...
- Oracle常见错误以及解决方法
前言: 本博客为博主在开发中遇到的问题,为大家提供解决方法,如需转载,请注明来源,谢谢! 问题一: 第一次用PLSQL Developer连接数据库,若用sys用户登录并操作则正常,若用普通用户比如x ...
- CODING DevOps + Nginx-ingress 实现自动化灰度发布
作者:王炜,CODING DevOps 后端开发工程师,拥有多年研发经验,云原生.DevOps.Kubernetes 资深爱好者,Servicemesher 服务网格中文社区成员.获得 Kuberne ...
- 01 . RPC简介原理及用Go实现一个简单的RCP
RPC简介 本地过程调用 // 正常情况下程序的执行和调用情况.例如有如下go语言代码: package main import "fmt" func main() { var a ...
- 数据库(十二):pymysql
进击のpython ***** 数据库--pymysql 数据库就算是学习完毕了,但是我们学习数据库的本质是什么? 是想让数据库像文件存储一样将信息存储起来供我们调用 那回归本行,我就应该是用pyth ...
- 跟老刘学运维day02~新手必须掌握的Linux命令(2)
第2章 Linux命令 1.Shell 计算机硬件:由运算器.控制器.存储器.输入/输出设备等共同组成 Shell:人与硬件的翻译官,人要想使用硬件,需要服务程序 Bash四大好处: (1)通过上下方 ...
- flask中url_for使用endpoint和视图函数名
在flask中,使用url_for 进行路由反转时,需要传递一个endpoint的值,用法如下: @app.route('/', endpoint='my_index') def index(): r ...
- Android个人中心UI
参考:https://blog.csdn.net/gjm15881133824/article/details/73742219
- 如何使用Istio 1.6管理多集群中的微服务?
假如你正在一家典型的企业里工作,需要与多个团队一起工作,并为客户提供一个独立的软件,组成一个应用程序.你的团队遵循微服务架构,并拥有由多个Kubernetes集群组成的广泛基础设施. 由于微服务分布在 ...
