java 使用poi导入Excel通用方法

需要的jar:

[XML] 纯文本查看 复制代码
?
1
2
3
4
5
<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.0</version>
</dependency>


java代码:

[Java] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
public static String importExcel(String filePath) throws Exception {
       //判断文件
       if (filePath != null && !"".equals(filePath)) {
           File file = new File(filePath);
           //判断格式
           if (file.getName().endsWith(EXCEL_XLS) || file.getName().endsWith(EXCEL_XLSX)) {
               //创建输入流对象
               InputStream is = new FileInputStream(file);
               Workbook workbook = null;
               //判断excel版本号
               if (file.getName().endsWith(EXCEL_XLS)) {
                   workbook = new HSSFWorkbook(is);
               } else if (file.getName().endsWith(EXCEL_XLSX)) {
                   workbook = new XSSFWorkbook(is);
               }
               Map<String, Object> objectMap=new HashMap<>();
               //循环表格(sheet)
               for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
                   Sheet sheet = workbook.getSheetAt(i);
                   //判断sheet是否有数据
                   if (sheet.getPhysicalNumberOfRows() <= 0) {
                       continue;
                   }
                   //存放集合
                   List<Map<String, Object>> list = new ArrayList<>();
                   //存放表头名字(第一行的数据)
                   List<String> header = new ArrayList<>();
                   for (int x = 0; x < sheet.getRow(0).getLastCellNum(); x++) {
                       Cell cell = sheet.getRow(0).getCell(x);
                       String value = cell.getStringCellValue();
                       header.add(value);
                   }
 
                   //获取行并进行循环
                   for (int j = 1; j <= sheet.getLastRowNum(); j++) {
                       Row row = sheet.getRow(j);
                       //判断row是否有数据
                       if (row.getPhysicalNumberOfCells() <= 0) {
                           continue;
                       }
                       //存放数据
                       Map<String, Object> map = new HashMap<>();
                       //获取单元格并进行循环
                       for (int k = 0; k < row.getLastCellNum(); k++) {
                           Cell cell = row.getCell(k);
                           if (cell == null || cell.toString().trim().equals("")) {
                               continue;
                           }
                           CellType cellType = cell.getCellTypeEnum();
                           //存放值
                           String cellValue = "";
                           //字符串
                           if (cellType == CellType.STRING) {
                               cellValue = cell.getStringCellValue().trim();
                               cellValue = StringUtil.isNullOrEmpty(cellValue) ? "" : cellValue;
                           }
                           //数据格式
                           if (cellType == CellType.NUMERIC) {
                               //判断日期类型
                               if (HSSFDateUtil.isCellDateFormatted(cell)) {
                                   SimpleDateFormat dff = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                                   String date1 = dff.format(cell.getDateCellValue());
                                   cellValue = date1;
                               } else {
                                   //设置数据格式("#.######"是几位小数)
                                   cellValue = new DecimalFormat("#.######").format(cell.getNumericCellValue());
                               }
                           }
                           if (cellType == CellType.BOOLEAN) {
                               cellValue = String.valueOf(cell.getBooleanCellValue());
                           }
                           //添加数据到map
                           map.put(header.get(k), cellValue);
                       }
                       //把map数据添加到list
                       list.add(map);
                   }
                   objectMap.put(sheet.getSheetName(),list);
               }
               return objectMap.toString();
           } else {
               return "文件不是excel";
           }
       } else {
           return "文件不存在";
       }
   }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值