1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Java实现Excel表格数据的导入(兼容xls与xlsx)

Java实现Excel表格数据的导入(兼容xls与xlsx)

时间:2024-03-18 09:35:43

相关推荐

Java实现Excel表格数据的导入(兼容xls与xlsx)

Java实现Excel表格数据的导入(兼容xls与xlsx)

目录依赖代码注意点

目录

依赖

<!-- 添加POI的依赖用于Excel的操作 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.0.0</version></dependency>

代码

public Result doRegisterFromExcel(@RequestParam("file") MultipartFile file){String EXCEL_XLS = "xls";String EXCEL_XLSX = "xlsx";if (file.isEmpty())return ResultGenerator.genFailResult("文件为空");System.out.println(file.getOriginalFilename());List<Boolean> registerResult = new ArrayList<>();try {//根据路径获取这个操作excel的实例Sheet sheet = null;Row row = null;if (file.getOriginalFilename().endsWith(EXCEL_XLS)) {//用于xls文件的读取HSSFWorkbook wb = new HSSFWorkbook(file.getInputStream());sheet = wb.getSheetAt(0);} else if (file.getOriginalFilename().endsWith(EXCEL_XLSX)) {//用于xlsx文件的读取XSSFWorkbook wb = new XSSFWorkbook(file.getInputStream());//根据页面index 获取sheet页sheet = wb.getSheetAt(0);}//实体类集合List<User> users = new ArrayList<>();//循环sheet页中数据从第三行开始,第一行是导入说明,第二行是标题for (int i = 2; i < sheet.getPhysicalNumberOfRows(); i++) {//获取每一行数据row = sheet.getRow(i);User user = new User();//表中第二列,日期if(row.getCell(1)!=null){Cell cell = row.getCell(1);Date d = cell.getDateCellValue();DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");String guarantee_date = "";guarantee_date = formater.format(d);user.setDate(guarantee_date);}//String类型的列,这里最好使用如下的方法。如果使用直接获取String的方法,会发生在表格数据为数字的情况下的异常if(row.getCell(2)!=null){//括号中为列数Cell cell = row.getCell(2);cell.setCellType(CellType.STRING);shljAbnormalGarbage.setChar(cell.getStringCellValue());}//数字类型的列if(row.getCell(3)!=null){shljAbnormalGarbage.setNumber((int)row.getCell(5).getNumericCellValue());}users.add(user);}for (User u : users) {Boolean test = false;registerResult.add(test = userService.addFormExcel(u.getDate(),u.getChar(), u.getNumber()));System.out.println(test);}} catch (Exception e) {e.printStackTrace();}return ResultGenerator.genSuccessResult(registerResult);}

注意点

在获取数据某一个单元格的数据时,要注意如下的方面,最好不要直接使用row.getCell(2).getStringCellValue();应该使用如下代码:

//String类型的列,这里最好使用如下的方法。如果使用直接获取String的方法,会发生在表格数据为数字的情况下的异常if(row.getCell(2)!=null){Cell cell = row.getCell(2);cell.setCellType(CellType.STRING);shljAbnormalGarbage.setChar(cell.getStringCellValue());}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。