前端上传excel文件以流的形式,后台接受进行数据读取,且入库
代码部分解读:
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(fis);//读取Excel文件
Sheet sheet = xssfWorkbook.getSheetAt(0);//创建第一个工作簿内容
int lastRowNum = sheet.getLastRowNum();//获取row下标
row.getCell(0).getStringCellValue();//获取单元格的值
引入的包:
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
读excel文件:(跳过表头)
public static void main(String[] args) {
File file = new File("G:\\aaa/bbb/20180711162826.xlsx");
try {
InputStream fis = new FileInputStream(file);
//读取导入的Excel文件内容
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(fis);
//获取第一个sheet工作薄
Sheet sheet = xssfWorkbook.getSheetAt(0);
//读取出来的数据放到ListMap中
List<Map<String, Object>> mapList =
new ArrayList<>();
//获取sheet的最大row下标,实际获取的行数-1
int lastRowNum = sheet.getLastRowNum();
if(lastRowNum > 0){
for(Row row : sheet){
//跳过表头
if(row.getRowNum() == 0){
continue;
}
//判断导入的excel文件中的是否存在空
boolean flag = isExistNull(row);
if(flag){
Map<String, Object> susMap = new HashMap<>();
susMap.put("id", row.getCell(0).getStringCellValue());
System.out.println("第"+ (row.getRowNum()+1) + "行,第1个单元格值为:" +row.getCell(0).getStringCellValue());
susMap.put("form", row.getCell(0).getStringCellValue());
System.out.println("第"+ (row.getRowNum()+1) + "行,第2个单元格值为:" +row.getCell(1).getStringCellValue());
susMap.put("tion", row.getCell(0).getStringCellValue());
System.out.println("第"+ (row.getRowNum()+1) + "行,第3个单元格值为:" +row.getCell(2).getStringCellValue());
susMap.put("name", row.getCell(0).getStringCellValue());
System.out.println("第"+ (row.getRowNum()+1) + "行,第4个单元格值为:" +row.getCell(3).getStringCellValue());
susMap.put("fee", row.getCell(0).getStringCellValue());
System.out.println("第"+ (row.getRowNum()+1) + "行,第5个单元格值为:" +row.getCell(4).getStringCellValue());
mapList.add(susMap);
}else{
//获取当前行数
int currentNum = row.getRowNum() + 1;
// return "第" + currentNum + "行数据出错,不能为空!"
System.out.println("第" + currentNum +
"行数据出错,不能为空!");
}
}
}else{
System.out.println("您导入的excel文件为空,请重新导入!");
// return "您导入的excel文件为空,请重新导入!";
}
} catch (IOException e) {
e.printStackTrace();
}
}
//判断导入的excel文件中row行的每个cell时候是否存在空
public static boolean isExistNull(Row row){
Cell cell0 = row.getCell(0);
if(cell0 == null){
return false;
}else{
cell0.setCellType(Cell.CELL_TYPE_STRING);
if(StringUtils.isBlank(cell0.getStringCellValue())){
return false;
}
}
Cell cell1 = row.getCell(1);
if(cell1 == null){
return false;
}else{
cell1.setCellType(Cell.CELL_TYPE_STRING);
if(StringUtils.isBlank(cell1.getStringCellValue())){
return false;
}
}
Cell cell2 = row.getCell(2);
if(cell2 == null){
return false;
}else{
cell2.setCellType(Cell.CELL_TYPE_STRING);
if(StringUtils.isBlank(cell2.getStringCellValue())){
return false;
}
}
Cell cell3 = row.getCell(3);
if(cell3 == null){
return false;
}else{
cell3.setCellType(Cell.CELL_TYPE_STRING);
if(StringUtils.isBlank(cell3.getStringCellValue())){
return false;
}
}
Cell cell4 = row.getCell(4);
if(cell4 == null){
return false;
}else{
cell4.setCellType(Cell.CELL_TYPE_STRING);
if(StringUtils.isBlank(cell4.getStringCellValue())){
return false;
}
}
return true;
}
文件内容:
文件位置:
运行读取文件内容如下: