POI file import: Code implementation - structure parsing Excel user list

User entity configuration class constructor

public User(Object [] values) {
	//用户名	手机号	工号	聘用 形式	入职 时间	部门编码
	this.username = values[1].toString();
	this.mobile = values[2].toString();
	this.workNumber = new DecimalFormat("#").format(values[3]).toString();
	this.formOfEmployment =((Double) values[4]).intValue();
	this.timeOfEntry = (Date) values[5];
	this.departmentId = values[6].toString(); //部门编码 != 部门id
}

Add upload method in the micro-system services in UserController

/**
 * 导入Excel,添加用户
 *  文件上传:springboot
 */
@RequestMapping(value="/user/import",method = RequestMethod.POST)
public Result importUser(@RequestParam(name="file") MultipartFile file) throws Exception {
	//1.解析Excel
	//1.1.根据Excel文件创建工作簿
	Workbook wb = new XSSFWorkbook(file.getInputStream());
	//1.2.获取Sheet
	Sheet sheet = wb.getSheetAt(0);//参数:索引
	//1.3.获取Sheet中的每一行,和每一个单元格
	//2.获取用户数据列表
	List<User> list = new ArrayList<>();
	System.out.println(sheet.getLastRowNum());
	for (int rowNum = 1; rowNum<= sheet.getLastRowNum() ;rowNum ++) {
		Row row = sheet.getRow(rowNum);//根据索引获取每一个行
		Object [] values = new Object[row.getLastCellNum()];
		for(int cellNum=1;cellNum< row.getLastCellNum(); cellNum ++) {
			Cell cell = row.getCell(cellNum);
			Object value = getCellValue(cell);
			values[cellNum] = value;
		}
		User user = new User(values);
		list.add(user);
	}
	//3.批量保存用户
	userService.saveAll(list,companyId,companyName);

	return new Result(ResultCode.SUCCESS);
}

public static Object getCellValue(Cell cell) {
	//1.获取到单元格的属性类型
	CellType cellType = cell.getCellType();
	//2.根据单元格数据类型获取数据
	Object value = null;
	switch (cellType) {
		case STRING:
			value = cell.getStringCellValue();
			break;
		case BOOLEAN:
			value = cell.getBooleanCellValue();
			break;
		case NUMERIC:
			if(DateUtil.isCellDateFormatted(cell)) {
				//日期格式
				value = cell.getDateCellValue();
			}else{
				//数字
				value = cell.getNumericCellValue();
			}
			break;
		case FORMULA: //公式
			value = cell.getCellFormula();
			break;
		default:
			break;
	}
	return value;
}

 

Released 2417 original articles · won praise 62 · Views 200,000 +

Guess you like

Origin blog.csdn.net/Leon_Jinhai_Sun/article/details/105187080