关于POI删除空行的操作心得:poi方法removeRow()调用后,空行依然存在

2 篇文章 0 订阅

前言

接到一个需求需要将excel上多余的空行进行删除,保持数据的紧凑与严谨。

上网搜了一篇关于poi的删除空行技术说明文章,里面提到需要调用关键方法removeRow()。满心欢喜的我马上拿来使用,但是在我使用后的结果非常不好,那个空行还存在。苦苦的在网上搜索解决方案,经过几个小时奋战后,依然得不到满意的结果,非常苦恼。

问题

poi方法removeRow()调用后,空行依然存在

解决方案

绝望的我实在受不了,只能躲到后走廊里默默的抽了一根烟,思考解决方案。当一个人钻牛角尖的时候,最好的解决办法是放松自己。当我一放松,思维得到解决后,马上从另外一个角度解决解决方案。我以前发现一个有趣的现象就是,excel的过滤查询后得到的结果,看起来是把不需要的“过滤“掉,其实并没有,无效行其实一直都存在并没有删除,那Excel是怎么实现这个过滤效果的呢?很简单,将行的行高设为0。OK,解决方案出来了

将行高设为0,实现行的伪删除,以下为关键代码:

	            //删除空行
	            for(int i=0;i<sheet.getLastRowNum();i++) {
	            	Row temp=sheet.getRow(i);
	            	boolean id=true;
	            	if(StringUtils.isNotBlank(temp.getCell(0)) || StringUtils.isNotBlank(temp.getCell(16))) {
	            		id=false;
	            	}
	            	
	            	if(id)
	            		temp.setHeight((short)0);
	            	
	            }

总结

顺利交付任务。虽然交付了任务,也解决了问题。但是从技术层面来说,我并没有解决为什么removeRow()方法调用后,相应的空行并没有删除。这个问题只能留待大神处理了

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值