用poi从excel文档导入数据

 1 import org.apache.commons.lang3.StringUtils;
 2 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 3 import org.apache.poi.ss.usermodel.*;
 4 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 5 import org.springframework.web.multipart.MultipartFile;
 6 
 7 import java.io.IOException;
 8 import java.math.BigDecimal;
 9 import java.util.*;
10 
11 public class ImportExcelTool {
12     public static List<Map<String, String>> readExcel(MultipartFile file) throws IOException {
13         Workbook workbook = null;
14         String fileName = file.getOriginalFilename();
15         if (Objects.requireNonNull(fileName).endsWith(".xlsx"))
16             workbook = new XSSFWorkbook(file.getInputStream());
17         if (fileName.endsWith(".xls"))
18             workbook = new HSSFWorkbook(file.getInputStream());
19         Sheet sheet = Objects.requireNonNull(workbook).getSheetAt(0);
20         int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
21 
22         Row row = sheet.getRow(1);
23         List<String> fieldNames = new ArrayList<>();
24         for (int i = 0; i < row.getLastCellNum(); i++)
25             fieldNames.add(row.getCell(i).getRichStringCellValue().getString());
26 
27         List<Map<String, String>> lsMap = new ArrayList<>();
28 
29         for (int j = 3; j < physicalNumberOfRows; j++) {
30             Map<String, String> dataMap = new HashMap<>();
31             Row dataRow = sheet.getRow(j);
32             if (dataRow == null)
33                 break;
34             for (int i = 0; i < dataRow.getLastCellNum(); i++) {
35                 String val = getCellValue(dataRow.getCell(i));
36                 dataMap.put(fieldNames.get(i), val);
37             }
38             if (dataMap.size() == 0)
39                 break;
40 
41             lsMap.add(dataMap);
42         }
43         return lsMap;
44     }
45 
46 
47     private static String getCellValue(Cell cell) {
48         if (cell == null)
49             return "";
50         if (cell.getCellType() == CellType.NUMERIC)
51             if (DateUtil.isCellDateFormatted(cell))
52                 return DateUtil.getJavaDate(cell.getNumericCellValue()).toString();
53             else
54                 return new BigDecimal(cell.getNumericCellValue()).toString();
55         else if (cell.getCellType() == CellType.STRING)
56             return StringUtils.trimToEmpty(cell.getStringCellValue());
57         else if (cell.getCellType() == CellType.FORMULA)
58             return StringUtils.trimToEmpty(cell.getCellFormula());
59         else if (cell.getCellType() == CellType.BLANK)
60             return "";
61         else if (cell.getCellType() == CellType.BOOLEAN)
62             return String.valueOf(cell.getBooleanCellValue());
63         else if (cell.getCellType() == CellType.ERROR)
64             return "ERROR";
65         else
66             return cell.toString().trim();
67 
68     }
69 }

 

posted @ 2019-09-12 11:25  昵了个称  阅读(270)  评论(0)    收藏  举报