文件导入功能-逐行读取Excel表格信息

使用java-XSSFWorkbook类来接收文件输入流,通过获取excel表的sheet数量来逐行遍历表格信息,直接上代码:

try{
XSSFWorkbook sheets = new XSSFWorkbook(file.getInputStream());// file是接口接收参数定义为MultipartFile类型
List<Entity> eList = new ArrayList<>();
int numberSheet= sheets.getNumberOfSheets(); // 获取Excel表的sheet数量
for (int i = 0;i < numberSheet;i++) {
	XSSFSheet xsheet = sheets.getSheetAt(i); // 读取Excel第一行数据
	for (int j =1;j < xsheet.getLastRowNum()+1;j++) {
		for(int k = 0; k < xsheet.getRow(j).getPhysicalNumberOfCells();k++) {
		DataFormatter formatter = new DataFormatter();// 初始化表格参数信息
		String cellValue = formatter.formartCellValue(sheet.getRow(j).getCell(k));
		Entity entity = new Entity();// 对应的要上传文件的实体类
		switch(k) {
			case(0) :
			 entity.setParams(cellValue);
			 break;
			}
			case(1) :
			entity.set..
			break;
			.
			.
			.
		}
		eList.add(entity);
	}
}
}catch (Exception e) {
	e.printStackTrace();
}
// 也可对导入的数据做去重处理
List<Entity> lists = eList.stream,collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Entity::getParams))),ArrayList::new));
// 接着就是批量入库的业务


你可能感兴趣的:(java)