根据自己实际操作,poi中lastRowNum方法获取行数的是excel最后有数据的一行,从0开始

而physicalNumberOfRows方法获取的行数是excel最后有数据的一行减去最后一行之前的空白行

工作中有一个需求是,上传excel文件导入数据,但是需要将成功的数据的条数,和失败条数返回,这种情况我的做法就是将成功的条数从excel中删除,使用

sheet.removeRow(sheet.getRow(40));

但是这个方法我们删除的只是数据,当前行并没有删除,所以留下来的是一个空行

这种情况就需要将空行后边的数据全部向前移一行,用到的方法是

sheet.shiftRows(i+1,physicalNumberOfRows,-1);

二个参数为需要移动的行的区间,第三个参数负数代表向前移,正数代表向后移

具体代码:

FileInputStream fileInputStream = new FileInputStream("D:\\MyDocuments\\itw_renzm\\桌面\\file.xls");

HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream);

HSSFSheet sheet = workbook.getSheetAt(0);

int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();

int lastRowNum = sheet.getLastRowNum();

//清除excel当前行

sheet.removeRow(sheet.getRow(10));

sheet.removeRow(sheet.getRow(20));

sheet.removeRow(sheet.getRow(21));

sheet.removeRow(sheet.getRow(22));

sheet.removeRow(sheet.getRow(23));

sheet.removeRow(sheet.getRow(24));

sheet.removeRow(sheet.getRow(40));

System.out.println(lastRowNum+"------"+physicalNumberOfRows);

for(int i =1;i

Row row = sheet.getRow(i);

Cell cell = null;

String cellValue = "";

if (row!=null){

cell = row.getCell(0);

cellValue = POIUtil.getCellValue(cell);

}

if (row==null||cell==null||cellValue==""){

sheet.shiftRows(i+1,lastRowNum,-1);

i--;

//减去一条空行,总行数减一。

lastRowNum--;

}

}

FileOutputStream fileOutputStream = new FileOutputStream("D:\\MyDocuments\\itw_renzm\\桌面\\file1.xls");

workbook.write(fileOutputStream);

fileOutputStream.close();

workbook.close();

fileInputStream.close();

}

java去除多余excel_java使用poi删除excel中的空行相关推荐

  1. java excel 空行_java使用poi删除excel中的空行

    根据自己实际操作,poi中lastRowNum方法获取行数的是excel最后有数据的一行,从0开始 而physicalNumberOfRows方法获取的行数是excel最后有数据的一行减去最后一行之前 ...

  2. 使用POI删除Excel中的行(亲自实践)

    删除行 一般情况下,删除行时会面临两种情况:删除行内容但保留行位置.整行删除(删除后下方单元格上移).对应的删除方法分别是:removeRow()及shiftRow(startRow,endRow,s ...

  3. java mvc 导出excel_Java springMVC POI 导出 EXCEL

    思路 : 将需要导出的数据存放在一个List中 创建一个EXCEL表 注意 XSSFWorkbook 只能操作2007以上的版本,XSSFWorkbook 只能操作2003一下的版本,所以需要的时候可 ...

  4. POI删除Excel中数据有效性

    读到这篇文章,请停下您Ctrl+c,Ctrl+v的脚步.因为这并不是真正的删除数据有效性,而是通过一种方式实现多次为某列设置数据有效性.我是真的百度没查到,Google没查到,官网也没找到关于使用PO ...

  5. java导入excel时去除空行,使用VBA将空行复制到新工作表后删除Excel中的空行

    您可以使用 AutoFilter 方法,它将节省您在所有行中使用 For 循环的需要,并且只需将整个过滤范围复制到"Tab 2"工作表 . Code (评论内部评论) Option ...

  6. java excel 列_Java 删除Excel中的行和列

    Excel是日常工作中常用的办公软件之一.在制作表格的时候,有时需要在工作表中插入一个或多个行和列,同时也会遇到需要将工作表中多余的行或列删除的情况.本文就将通过使用Java程序来演示如何删除Exce ...

  7. java通过poi读取excel中的日期类型数据或自定义类型日期

    java通过poi读取excel中的日期类型数据或自定义类型日期 Java 读取Excel表格日期类型数据的时候,读出来的是这样的  12-十月-2019,而Excel中输入的是 2019/10/12 ...

  8. Java利用Apace POI读取Excel中数据

    Java利用Apace POI读取Excel中数据,解析数据 @Testpublic void readExcel() throws IOException{FileSystemView fsv = ...

  9. POI读取excel中读取小数位数过多,数值精度损失问题解决

    POI读取excel中读取小数位数过多,数值精度损失问题解决 参考来源 项目中需要用到读取excel功能,当excel中有计算公式时,读取到的数值就可能会出现多个小数点的问题 例如: 2.2 --&g ...

最新文章

  1. 漫话:如何给女朋友解释什么是系统可用性?
  2. UA PHYS515 电磁理论II 静电场问题5 用Green函数法求解interior Dirichlet问题的例子
  3. pip报 No module named ‘pip‘ 错误
  4. 数列分块入门 5(LibreOj-6281)
  5. Php连接及读取和写入mysql数据库的常用代码
  6. ajax前面$,连续多次发送Ajax前面的请求被后面的覆盖以致不能执行的问题
  7. 公司内网与外网连通中的一些小问题(达内)
  8. 干涉测量技术的应用_特殊工程的施工测量技术应用分享
  9. 简述有监督学习、半监督学习、无监督学习、弱监督学习
  10. 庖丁解牛 - 图解MySQL 8.0优化器查询解析篇
  11. 超大文件上传 WebUploader 断点续传,分片上传
  12. ORACLE内核参数
  13. 小米6刷Android10以及Xposed
  14. 哈尔滨工业大学计算机考研专业课,2020考研哈尔滨工业大学计算机考研考试科目...
  15. 将mysql 导出word文档_将数据库的内容生成WORD文档
  16. Fiddler中篡改后端返回数据
  17. 15【存储过程和存储函数】
  18. ubuntu14.04 wps字体缺失问题
  19. 计算机网络技术2020,计算机网络技术超星2020试题及答案
  20. PLC复习提纲及部分答案

热门文章

  1. 《数据库系统》(二) 关系数据库
  2. 【历史上的今天】7 月 8 日:PostgreSQL 发布;SUSE 收购 K8s 最大服务商;动视暴雪合并
  3. 计算机技术实训的内容,计算机专业生产实习目的及内容
  4. C#验证身份证是否有效
  5. 数字摄影测量之特征点提取算法
  6. 第3选择-解决所有难题的关键思维,种下好的种子避免落入钻石交易
  7. excel表格中的空白行你还在一个个删除吗?Speedoffice教你一招
  8. 世界互联网大会,乌镇,互联网人的盛会,大数据文摘来了!
  9. 最简单DIY基于ESP8266的智能彩灯③(在网页用按钮+滑动条+手机APP控制RGB灯)
  10. 1.2 二维三维空间向量组的线性组合