C#使用NPOI进行存在重复的excel表格的数据统计
前言
从excel表格统计数据,可能会出现同一字段名的数据需要累加的情况,本文使用List集合存储数据;使用C#的NPOI类进行实现如下
一、首先需要excel文件的导入导出,链接如下:
excel文件的导入导出
二、实现数据统计
1.定义存放数据的List集合与存放待统计数据所在Cell索引的int类型变量
代码如下:
List<string> list1 = new List<string>(); //存放索引字段名
List<double> list2 = new List<double>(); //存放与list1中索引字段名对应的数据int define_index = -1; //存放索引所在Cell的列数
int ob_value_index = -1; //存放数据所在Cell的列数
2.遍历代统计列索引
行总数rowCount可以通过LastRowNum最后一行行数的方法获得;列总数cellCount可以通过LastCellNum最后一列列数的方法获得。
注:由于编程中数组正常从0开始,RowNum也同样是从0开始,LastRowNum会比实际小1。
这里很迷的是:FirstRowNum、LastRowNum和FirstCellNum都遵循从0开始,即比实际小1;LastCellNum会自动加1,与实际列数相匹配。
代码如下:
IRow firstrow = sheet.GetRow(0);int cellCount = firstrow.LastCellNum;for (int i = 0; i <= cellCount - 1; i++){if ("索引列名".Equals(firstrow.Cells[i].StringCellValue)){define_index = i; //将待统计数据的索引所在列记录下来}if ("数据列名".Equals(firstrow.Cells[i].StringCellValue)){ob_value_index = i; //将待统计数据的数据所在列记录下来}}
3.遍历数据,进行汇总统计
遍历所有的数据,若List1中已存在该索引名,则在List2中对应位置的数据值进行累加;若不存在,则将索引名和数据新插入List集合
代码如下:
for (int i = 0; i <= rowCount - 1; i++){row = sheet.GetRow(i + 1);if (!"".Equals(row.Cells[define_index].StringCellValue)) //excel表格式的特殊性,有数据重复,重复数据行的索引名为空;根据此特点进行筛选{if (list1.Contains(row.Cells[define_index].StringCellValue)) //如果list1中包含此索引名称{for (int j = 0; j < list1.Count; j++){if (list1[j].Equals(row.Cells[define_index].StringCellValue)) //遍历获取到索引名称所在位置{list2[j] += row.Cells[ob_value_index].NumericCellValue; //在相应位置对list2数据进行累加操作}}}else //list1中不存在该索引名称时,进行新插入数据{list1.Add(row.Cells[define_index].StringCellValue);list2.Add(row.Cells[ob_value_index].NumericCellValue);}}}
总结
以上即实现了excel表格中需要累加统计的存在重复索引名称情况的解决方法,最后得到的两个List分别存储索引名称和该名称对应的最终累加数据。
C#使用NPOI进行存在重复的excel表格的数据统计相关推荐
- 计算机Excel设置透视图,电脑Excel表格中数据透视图怎么制作
电脑Excel表格中数据透视图怎么制作 腾讯视频/爱奇艺/优酷/外卖 充值4折起 我们在使用excel表格办公的时候,有时候会需要使用到数据透视表.今天小编就告诉大家电脑Excel表格中数据透视图怎么 ...
- 用 Python 对 Excel 表格内数据进行去重、分类,标记异常及分析
Python与Excel表格综合实例四:对 Excel 表格内数据进行去重.分类,异常处理及分析 前言: 主要实现代码及思路: 1.主要思路: 2.读取数据函数: 3.数据去重函数: 4.数据分类函数 ...
- excel表格内数据为何无法计算机,电脑EXCEL表格怎么让隐藏列(行)中的数据不被复制...
电脑EXCEL表格怎么让隐藏列(行)中的数据不被复制 我们即便在excel中隐藏了列(行),依旧可以显示出来并被复制.今天小编就告诉大家电脑EXCEL表格怎么让隐藏列(行)中的数据不被复制. 具体如下 ...
- 点击展开 表格_CAD怎么将excel表格的数据导入并且实时更新?
打造带着微信干工程的实用公众号!欢迎关注本公众号! 小编推荐好文 筑龙至尊套餐 | 全套施工技能培训视频 | 免费分享 全套工程视频合集 | 交底学习必备 | 部分可下载 全套质量通病及防治 | 联盟 ...
- 到处excel表格的数据和页面的数据不一致
列表:Select t,m.frameworkName,ma.accountName from SaleEntity t left join MediaAccountEntity ma on t.me ...
- 如果去掉数学前后的空格_excel表格数据消除前后空格-EXCEL表格中数据后面的空格怎么去掉,一条条手工删......
excel表格中,单元格的内容后面总是有一个空格,怎... 准备工具/材料:windows10电脑,excel软件. 单元格的内容后面去除空格的方法如下: 1.首先,打开需要设置的excel文件. 2 ...
- excel表格汇总数据
今天跟大家分享一下excel表格汇总数据 1.如下图,有两个演示文件要求我们将两个表格数据汇总到一块. 2.首先我们点击下图选项 3.点击[汇总拆分]-[汇总多簿] 4.点击[添加文件].然后将文件添 ...
- 计算机计算公式单组数据求乘法,(excel表格全部数据怎么乘以一个数啊)
计算机一级用excel表格计算增长比例该怎么算? 1先在excel的单元格中输入需要计算增长比例的. 2.然后在C1单元输入计式:=(B1-A1)/A1. 3.点击回车,即可将计算公式生成结果,此时计 ...
- 如何从Excel表格导入数据批量生成二维码
目前二维码应用渐趋广泛,二维码具有储存量大.保密性高.追踪性高.抗损性强.备援性大.成本便宜等特性,这些特性特别适用于表单.安全保密.追踪.证照.存货盘点.资料备援等方面.那么我们怎么用条码打印软件从 ...
最新文章
- 使用Canvas进行验证码识别
- 【django轻量级框架】云端系统之Django框架
- java修改文件的大小限制_Struts2修改上传文件大小限制方法解析
- 金融贷款逾期的模型构建6——特征选择
- 最新数据分析与商业智能趋势前瞻
- 简单代码大全_VBA爱好者请进:VBA代码宝概述
- restTemplate请求,报 : No instances avaliable for ip地址
- 【数据结构】图文讲解神奇的单链表与双链表
- 一个简单的把对象序列化/反序列化为json格式的程序
- SQL Server2005+SQL Server2000下载
- 51单片机(AT89S52)设计简单计算器(4位加减乘除)
- C/C++:long int与long long的区别
- 计算机文件大小排序工具,如何对电脑文件夹进行排序
- java导出excel自定义表头,架构师必备!
- 自动打开html网页脚本,开启网页全屏插件(自动开启网页全屏脚本js插件)
- 猫叫狗叫java_狗叫猫叫动物叫声手机版|狗叫猫叫动物叫声安卓版下载 v1.1 - 跑跑车安卓网...
- 全球及中国智能医疗产品行业发展态势及投资可行性研究报告2022-2027年
- 推荐系统评价:什么是好的推荐系统
- 鱼C工作室c++(P40-42)命名空间和模块化编程
- Ubuntu服务器找不到网卡