Poi解析Excel

准备Excel

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        DecimalFormat decimalFormat = new DecimalFormat("0.00");
        File file = new File("G:\\poi\\src\\main\\resources\\学生表.xls");
        FileInputStream fileInputStream = new FileInputStream(file);
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fileInputStream);
        //获取第一个sheet页
        HSSFSheet sheetAt = hssfWorkbook.getSheetAt(0);
        List<String[]> strings = new ArrayList<>();
        //获取所有的行数
        int lastRowNum = sheetAt.getLastRowNum();
        StringBuilder value = new StringBuilder();
        for (int j = 1; j <=lastRowNum; j++) {
            //拿到单行
            HSSFRow row = sheetAt.getRow(j);
            HSSFCell cell;
            String[] values = new String[lastRowNum];
            //循环出一行中的每一个元素
            for (int k = 0; k <=row.getLastCellNum(); k++) {
                cell = row.getCell(k);
                if (cell != null) {
                    //根据不同的类型做不同的转换
                    switch (cell.getCellType()) {
                        case HSSFCell.CELL_TYPE_STRING:
                            value.append(cell.getStringCellValue());
                            break;
                        case HSSFCell.CELL_TYPE_NUMERIC:
                            if (HSSFDateUtil.isCellDateFormatted(cell)) {
                                Date date = cell.getDateCellValue();
                                if (date != null) {
                                    value.append(dateFormat.format(date));
                                }
                            } else {
                                value.append(decimalFormat.format(cell
                                        .getNumericCellValue()));
                            }
                            break;
                        case HSSFCell.CELL_TYPE_FORMULA:
                            // 导入时如果为公式生成的数据则无值
                            if (cell.getStringCellValue().equals("")) {
                                value.append(cell.getNumericCellValue());
                            } else {
                                value.append(cell.getStringCellValue());
                            }
                            break;
                        case HSSFCell.CELL_TYPE_BLANK:
                            break;
                        case HSSFCell.CELL_TYPE_ERROR:
                            break;
                        case HSSFCell.CELL_TYPE_BOOLEAN:
                            value.append((cell.getBooleanCellValue() == true ? "Y" : "N"));
                            break;
                        default:
                            value.setLength(0);
                    }
                }
                values[k]=value.toString();
                value.setLength(0);
            }
            strings.add(values);
        }
        fileInputStream.close();
        List<Student> students = new ArrayList<>();
        for (String[] a: strings) {
            Student student = new Student();
            student.setName(a[0].trim());
            if(a[1].trim()!=null && !"".equals(a[1].trim())){
                student.setAge(Double.parseDouble(a[1].trim()));
            }
            student.setPhone(a[2].trim());
            students.add(student);
        }
        students.forEach(item-> System.out.println(item.toString()));

 执行结果

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值