前言

从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表格的数据统计相关推荐

  1. 计算机Excel设置透视图,电脑Excel表格中数据透视图怎么制作

    电脑Excel表格中数据透视图怎么制作 腾讯视频/爱奇艺/优酷/外卖 充值4折起 我们在使用excel表格办公的时候,有时候会需要使用到数据透视表.今天小编就告诉大家电脑Excel表格中数据透视图怎么 ...

  2. 用 Python 对 Excel 表格内数据进行去重、分类,标记异常及分析

    Python与Excel表格综合实例四:对 Excel 表格内数据进行去重.分类,异常处理及分析 前言: 主要实现代码及思路: 1.主要思路: 2.读取数据函数: 3.数据去重函数: 4.数据分类函数 ...

  3. excel表格内数据为何无法计算机,电脑EXCEL表格怎么让隐藏列(行)中的数据不被复制...

    电脑EXCEL表格怎么让隐藏列(行)中的数据不被复制 我们即便在excel中隐藏了列(行),依旧可以显示出来并被复制.今天小编就告诉大家电脑EXCEL表格怎么让隐藏列(行)中的数据不被复制. 具体如下 ...

  4. 点击展开 表格_CAD怎么将excel表格的数据导入并且实时更新?

    打造带着微信干工程的实用公众号!欢迎关注本公众号! 小编推荐好文 筑龙至尊套餐 | 全套施工技能培训视频 | 免费分享 全套工程视频合集 | 交底学习必备 | 部分可下载 全套质量通病及防治 | 联盟 ...

  5. 到处excel表格的数据和页面的数据不一致

    列表:Select t,m.frameworkName,ma.accountName from SaleEntity t left join MediaAccountEntity ma on t.me ...

  6. 如果去掉数学前后的空格_excel表格数据消除前后空格-EXCEL表格中数据后面的空格怎么去掉,一条条手工删......

    excel表格中,单元格的内容后面总是有一个空格,怎... 准备工具/材料:windows10电脑,excel软件. 单元格的内容后面去除空格的方法如下: 1.首先,打开需要设置的excel文件. 2 ...

  7. excel表格汇总数据

    今天跟大家分享一下excel表格汇总数据 1.如下图,有两个演示文件要求我们将两个表格数据汇总到一块. 2.首先我们点击下图选项 3.点击[汇总拆分]-[汇总多簿] 4.点击[添加文件].然后将文件添 ...

  8. 计算机计算公式单组数据求乘法,(excel表格全部数据怎么乘以一个数啊)

    计算机一级用excel表格计算增长比例该怎么算? 1先在excel的单元格中输入需要计算增长比例的. 2.然后在C1单元输入计式:=(B1-A1)/A1. 3.点击回车,即可将计算公式生成结果,此时计 ...

  9. 如何从Excel表格导入数据批量生成二维码

    目前二维码应用渐趋广泛,二维码具有储存量大.保密性高.追踪性高.抗损性强.备援性大.成本便宜等特性,这些特性特别适用于表单.安全保密.追踪.证照.存货盘点.资料备援等方面.那么我们怎么用条码打印软件从 ...

最新文章

  1. 使用Canvas进行验证码识别
  2. 【django轻量级框架】云端系统之Django框架
  3. java修改文件的大小限制_Struts2修改上传文件大小限制方法解析
  4. 金融贷款逾期的模型构建6——特征选择
  5. 最新数据分析与商业智能趋势前瞻
  6. 简单代码大全_VBA爱好者请进:VBA代码宝概述
  7. restTemplate请求,报 : No instances avaliable for ip地址
  8. 【数据结构】图文讲解神奇的单链表与双链表
  9. 一个简单的把对象序列化/反序列化为json格式的程序
  10. SQL Server2005+SQL Server2000下载
  11. 51单片机(AT89S52)设计简单计算器(4位加减乘除)
  12. C/C++:long int与long long的区别
  13. 计算机文件大小排序工具,如何对电脑文件夹进行排序
  14. java导出excel自定义表头,架构师必备!
  15. 自动打开html网页脚本,开启网页全屏插件(自动开启网页全屏脚本js插件)
  16. 猫叫狗叫java_狗叫猫叫动物叫声手机版|狗叫猫叫动物叫声安卓版下载 v1.1 - 跑跑车安卓网...
  17. 全球及中国智能医疗产品行业发展态势及投资可行性研究报告2022-2027年
  18. 推荐系统评价:什么是好的推荐系统
  19. 鱼C工作室c++(P40-42)命名空间和模块化编程
  20. Ubuntu服务器找不到网卡

热门文章

  1. java面试题基本题型
  2. 网络疯传的《纽约客》封面图:人类有一天会向机器人乞讨!
  3. 纪念我的第一个WP7软件
  4. 一年java经验总结
  5. 数字时代,XDR(扩展检测与响应)的无限可能
  6. 龙应台点评奥斯卡最佳外语片《窃听风暴》
  7. web前端学会使用图片轮播
  8. Android.bp文件详解
  9. Java 继承中的属性隐藏与方法重写
  10. 项目管理没有思路,还是得靠它