Java之导入Excel 后端篇

public void updateExcel(@RequestBody MultipartFile file) {
try{
    Workbook workbook = getWorkBook(file);//获取工作簿workbook 
    Sheet sheetAt = workbook.getSheetAt(0);//根据工作簿获取整张excel表的信息

  for (int i=1; i<= sheetAt.getLastRowNum(); i++){//第一行是表头,所以不要,i从1开始

    for(int j=0; j < sheetAt.getRow(i).getLastCellNum(); j++){//循环每一行
            Cell cell = sheetAt.getRow(i).getCell(j);//获取每一个单元格的值
           String value = getValue(cell);//把单元格的值转成字符串
            System.out.print(value+" ");
      }
    System.out.println();
  }

}catch(Exception e){
    e.printStackTrace();
}
}

public static Workbook getWorkBook(MultipartFile file) {
    //获得文件名
    String fileName = file.getOriginalFilename();
    //创建Workbook工作薄对象,表示整个excel
    Workbook workbook = null;
    Sheet sheet = null;
    try {
        //获取excel文件的io流
        InputStream is = file.getInputStream();
        //根据文件后缀名不同(xls和xlsx)获得不同的Workbook实现类对象
        if(fileName.endsWith("xls")){
            //2003
            POIFSFileSystem poifsFileSystem = new POIFSFileSystem(is);
            workbook = new HSSFWorkbook(poifsFileSystem);
            sheet = workbook.getSheetAt(0);
        }else if(fileName.endsWith("xlsx")){
            //2007 及2007以上
            workbook = new XSSFWorkbook(is);
            sheet = workbook.getSheetAt(0);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return workbook;
}


public static String getValue(Cell cell){
    if(cell.getCellTypeEnum() == org.apache.poi.ss.usermodel.CellType.BOOLEAN){
        return String.valueOf(cell.getBooleanCellValue());
    }else if(cell.getCellTypeEnum() == org.apache.poi.ss.usermodel.CellType.NUMERIC){
        String value = "";
        if (HSSFDateUtil.isCellDateFormatted(cell)) {
            Date d = cell.getDateCellValue();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            value = sdf.format(d);
        }else{
            double temp = cell.getNumericCellValue();
            //value = new BigDecimal(temp).toString();
            value = String.valueOf(temp);
        }
        return value;
    }else if (cell.getCellTypeEnum() == org.apache.poi.ss.usermodel.CellType.STRING){
        return String.valueOf(cell.getStringCellValue());
    }else{
        return String.valueOf(cell.getStringCellValue());
    }
}

 

posted @ 2019-05-08 17:16  流年成双  阅读(1907)  评论(0编辑  收藏  举报