问题收集EXCEL

问题记录


前言

记录遇到的一些问题,供参考回顾

分类暂时不会很多


`提示:问题集仅供参考,具体问题需要结合使用的框架、引入的jar包、jdk版本具体分析

一、EXCEL 【POI】问题

简介:开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一个是apache 的poi, 另一个是 Java Excel

Apache POI 简介是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office(Excel、WORD、PowerPoint、Visio等)格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“可怜的模糊实现”。

官方主页: http://poi.apache.org/index.html
API文档: http://poi.apache.org/apidocs/index.html

使用问题:
1.过时的方法,项目需求导入excel时,需要获取excel里的行数,再取每一行,进而获取每行的每个单元格的内容。
获取最后一行:sheet.getLastRowNum();
当excel文件里存在空行时,该方法也会获取空行,例excel有6行有内容,删除第6行的内容,该方法依然会获取空行(第6行)作为最后一行
此处需要在获取最后一行方法处做处理,例如:

private int getLastRowNum(Sheet sheet){
	int lastRowNum = sheet.getLastRowNum();
	Row row = sheet.getRow(lastRowNum);
	while(isRowEmpty(row)){
		lastRowNum--;
		row = sheet.getRow(lastRowNum);
	}
	return lastRowNum;
}
private boolean isRowEmpty(Row row){
	if(row==null){
		return true;
	}
	for(int i =row.getFirstCellNum();i<row.getLastCellNum();i++){
		Cell cell =  row.getCell(i);
		if(cell==null){
			break;
		}else{
			cell.setCellType(CellType.STRING);
			String cellStr = cell.toString();
			if(StringUtils.isNotEmpty(cellStr)){
				return false;
			}
		}
	}
	return true;
}

在后续获取excel实体后还需进行null判空处理;

2.cell单元格的处理:需要对cell单元格进行判空处理,一般见到的如此处理:

	Cell cell = row.getCell(c);
	if(cell!=null && cell.~~getCellType~~   ()!=Cell.~~CELL_TYPE_BLANK~~ ){
	.....
	.....
	}
}

这里目前用cell==null 和cell!=null做处理;

	Cell cell = row.getCell(c);
	if(cell==null){
		break;
	}else{
		cell.setCellType(CellType.STRING);
		String cellStr = cell.toString();
		if(StringUtils.isNotEmpty(cellStr)){
			return false;
		}
	}
}

注意需要对单元格做null和“”(空)处理,警惕空指针异常

3.导入优化点:导入的excel获取到首行导入说明可以先拼接定义一个string字符串,在获取excel文件后再获取首行拼接成字符串,亮字符串进行对比,不一致即导入模板不正确:

二、XXX

1.XXX

代码如下(示例):

XXXXX

2.XX

代码如下(示例):

XXX

XXX。


总结

提示:这里对文章进行总结:
例如:XXXX。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值