天天看點

Springboot讀取excel

1. 導包

<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>      

讀取方法:

File file = new File("/Users/zhongguangxi/Documents/yrt-file/kcsj.xlsx");
InputStream is = new FileInputStream(file);
Workbook workbook = new XSSFWorkbook(is);
// 如果excel的字尾是xls,說明是03版,需要用如下方法
// Workbook workbook = new HSSFWorkbook(is);
//讀取工作簿的第一張表格
Sheet sheet = workbook.getSheetAt(0);
for (int i = sheet.getFirstRowNum() + 1; i <= sheet.getLastRowNum(); i++) {
  Row row = sheet.getRow(i);
  // 讀取單元格内容
  getCellValue(row.getCell(1))
}      

getCellValue方法:

private static String getCellValue(Cell cell) {

    if (cell == null) {
        return "";
    }

    if ("NUMERIC".equals(cell.getCellType().name())) {
        return new BigDecimal(cell.getNumericCellValue()).toString();
    } else if ("STRING".equals(cell.getCellType().name()))
        return StringUtils.trimToEmpty(cell.getStringCellValue());
    else if ("FORMULA".equals(cell.getCellType().name())) {
        return StringUtils.trimToEmpty(cell.getCellFormula());
    } else if ("BLANK".equals(cell.getCellType().name())) {
        return "";
    } else if ("BOOLEAN".equals(cell.getCellType().name())) {
        return String.valueOf(cell.getBooleanCellValue());
    } else if ("ERROR".equals(cell.getCellType().name())) {
        return "ERROR";
    } else {
        return cell.toString().trim();
    }
}      
Cell cell1 = row.getCell(13);
if (cell1 != null) {
    if (cell1.getDateCellValue()!=null) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String value = sdf.format(cell1.getDateCellValue());
        hmi.setOverdueDate(StringUtils.isEmpty(value) ? null : LocalDate.parse(value, DateTimeFormatter.ofPattern("yyyy-MM-dd")));
    }
}