Java操作xls文件,数据去重

文章目录

  • 前言
  • 一、读取磁盘文件,进行数据去重处理
  • 二、将合并的数据写入到源文件建中
  • 总结

前言

根据 表格数据的某一列唯一值生成key,将要进行数据合并列的值作value进行value值得去重合并
用到Map,poi jar包,输入输出流(io流)

一、读取磁盘文件,进行数据去重处理

public void excel() throws Exception {//用流的方式先读取到你想要的excel的文件FileInputStream fis=new FileInputStream(new File("D:\\ww.xls"));//解析excelPOIFSFileSystem pSystem=new POIFSFileSystem(fis);//获取整个excelHSSFWorkbook hb=new HSSFWorkbook(pSystem);System.out.println(hb.getNumCellStyles());//获取第一个表单sheetHSSFSheet sheet=hb.getSheetAt(0);//循环行数依次获取列数Map<String, String> map = new HashMap<>();for (int i = sheet.getFirstRowNum()+1; i < sheet.getLastRowNum()+1; i++) {//获取哪一行iRow row=sheet.getRow(i);if (row!=null) {//创建一个集合,用处将每一行的每一列数据都存入集合中Cell cell0=row.getCell(0); //这里我以第一列为keyString key = cell0.getStringCellValue();Cell cell5=row.getCell(5);//这里我以第二列为valueString value = cell5.getStringCellValue();if(map.get(key) == null){map.put(key,value);}else{String s = map.get(key);String valueNew = s+","+ value;//以逗号拼接valuemap.put(key,valueNew);}}}fis.close();System.out.println(map);for (Map.Entry<String, String> stringStringEntry : map.entrySet()) {List<String> list = new ArrayList<>();String value = stringStringEntry.getValue();String[] split = value.split(",");for (String s : split) {if (!list.contains(s)){list.add(s);}}String join = StringUtils.join(list, ",");stringStringEntry.setValue(join);}System.out.println(map);sss(map);//输出文件}

二、将合并的数据写入到源文件建中

代码如下(示例):

public void sss(Map<String, String> map) throws Exception {//对一个文件的读写,一定要注意是否有其他的进程在读写改文件,不然会写操作失败FileInputStream fis=new FileInputStream(new File("D:\\ww.xls"));//解析excelPOIFSFileSystem pSystem=new POIFSFileSystem(fis);//获取整个excelHSSFWorkbook hb=new HSSFWorkbook(pSystem);System.out.println(hb.getNumCellStyles());//获取第一个表单sheetHSSFSheet sheet=hb.getSheetAt(0);//循环行数依次获取列数for (int i = sheet.getFirstRowNum()+1; i < sheet.getLastRowNum()+1; i++) {//获取哪一行iRow row = sheet.getRow(i);if (row!=null) {//创建一个集合,用处将每一行的每一列数据都存入集合中Cell cell0=row.getCell(0);String key = cell0.getStringCellValue();if(map.get(key) != null){String s = map.get(key);Cell cell5=row.createCell(5);cell5.setCellValue(s);}}}fis.close();FileOutputStream outPutStream=new FileOutputStream(new File("D:\\ww.xls"));hb.write(outPutStream);//利用io流更改写入新数据outPutStream.flush();outPutStream.close();}

总结

主要是理解poi jar包中对表格数据进行封装的个个对象,表格,行,列,单元格相关对象的一个操作。粗陋理解,还望大家指正和补充。

Java操作xls文件,数据去重相关推荐

  1. java操作excel文件基础架构实现,支持2007以上版本

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/22800915 java操作office文件现在主流的jar包有jxl和POI,由 ...

  2. java操作properties文件简单学习

    java操作properties文件的工具类简单封装: 注意:由于本地和环境和linux服务的路径有区别,或者jetty,resin,tomcat部署后,文件的路径也是有区别的.比如我们在linux上 ...

  3. JAVA操作xml文件

    参考:java操作xml方法,总有适合你的 XML技术在Java开发中的应用 1.简介 xml: extensible Markup Language 1.1使用场景: 不同的系统之间交互时使用xml ...

  4. day08-代码操作xls文件

    day08-代码操作xls文件 01代码发送学生成绩 1. 准备数据 # 导入openpyxl库 import openpyxl# 导入smtplib库 import smtplibfrom emai ...

  5. 字符串去重_文件数据去重示例

    [摘要] 本文介绍小文件与大文件在进行数据去重时的几种处理办法,比如按整行或关键列去除重复数据或留下重复数据,并用 esProc SPL 举例实现.请点击文件数据去重示例了解详情 在数据处理业务中,有 ...

  6. JAVA操作属性文件,可进行读 写 更改

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! JAVA ...

  7. Java操作word文件的工具选择

    Java操作word文件的工具选择 使用Java语言,创建doc.docx.excel.pdf等文档,并对文档进行一系列操作. Spire.Doc for Java https://blog.csdn ...

  8. java 操作Zip文件(压缩、解压、加密)

    java 操作Zip文件(压缩.解压.加密) 依赖:点击下载 package com.zxl.test;import net.lingala.zip4j.model.ZipParameters; im ...

  9. 高级知识点:excel4j实现java操作excel文件的读写

    介绍 java操作excel文件最经典的是POI,但是其api 较多,代码量巨大,反复重复 excel4j ap则简洁太多,利用pojo建模,利用注解进行标识@ExcelField(title = & ...

  10. java解析csv文件工具类,java操作CSV文件工具类

    离线路灯 UID:3 注册时间2011-08-21 最后登录2021-03-15 在线时间5398小时 发帖659 精华44 金币3650 威望1881 股份280 发帖659 金币3650威望188 ...

最新文章

  1. 【FFmpeg】解码时refcounted_frames标志的使用
  2. each 数据获取attr_调用高德POI数据,带你玩转长沙
  3. 运算放大器基本公式_运算放大器 - 产生的背景和解决的问题
  4. java的Random类详解
  5. java实验报告合肥工业大学_合肥工业大学数据结构上机实验代码与实验报告(全)github地址...
  6. java程序结构_java程序的三种结构
  7. ASP.NET MVC Url中参数过长引发的问题
  8. 企业局域网——论文开题报告
  9. 自定义 feign 调用实现 hystrix 超时、异常熔断
  10. 我的css reset
  11. Redis 内存碎片
  12. 23个机器学习最佳入门项目(附源代码)
  13. 《人生若只如初见——古典诗词的美丽与哀愁》--安意如
  14. 有1分,2分,5分,10分四种硬币,每种硬币数量无限,有多少中组合可以组成n分钱?
  15. windows10 系统中,双屏下,设置各自屏的任务栏显示各自显示器中的任务。
  16. 萌新卷妹带你逃出算法无名岛第六站
  17. RAD Studio XE (DelphiXE)官网下载地址与注册
  18. 【NOI2011】阿狸的打字机
  19. epub 免费转换网站
  20. 线性代数 - 矩阵形式下的最小二乘法

热门文章

  1. 广域网宽带接入技术八ADSL技术
  2. 规范完整APP开发制作流程
  3. 使用Python在Windows环境下切换输入法
  4. 实验十七 通信录csv文件管理
  5. 手机中如何使用阿里云的企业邮箱
  6. Enigma密码机原理图解
  7. 码怪之程序员的日常语录
  8. can't create new tempfile: mysql_MySQL数据表“使用中”修复后依然无效提示Can't create new tempfile的解决方法...
  9. 最简单的 QQ分享、微信分享、一键加QQ群 引入
  10. 2018-2019的裁员风波(程序员要有危机意识,程序员堪比娱乐圈,更新换代快)