POI Excel导入

POI Excel导入

经验文章nimo972025-05-22 13:42:572A+A-

文介绍了一种使用Java编程语言从本地Excel文件中读取数据的方法。通过利用Apache POI库,实现了对Excel文件的读取、解析及数据处理流程。文章详细展示了如何创建文件流、工作簿、表单及行,并对每行数据进行遍历,根据不同的数据类型转换为相应的Java类型。此外,还介绍了如何将解析后的数据存储到数据库中。

 @GetMapping("/uploadExcel")
    public void uploadExcel() throws Exception {
        AreaEntity areaEntity = new AreaEntity();
        List<AreaEntity> list = new ArrayList<>();
        //文件路径
        String path = "C:\\Users\\Administrator\\Downloads\\";
        //获取文件流
        FileInputStream inputStream = new FileInputStream(path + "Excel下载 .xls");
        //创建工作簿
        HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
        //根据索引获取表
        HSSFSheet sheet = workbook.getSheetAt(0);
        //获取excel数据多少行数据(数据行数=总行数-表头行数)
        int lastRowNum = sheet.getLastRowNum();
        for (int i = 1; i < lastRowNum; i++) {
            HSSFRow row = sheet.getRow(i);
            //判断行非空
            if (row != null) {
                //获取列数
                int cells = row.getPhysicalNumberOfCells();
                for (int j = 0; j < cells; j++) {
                    HSSFCell cell = row.getCell(j);
                    //判断列非空
                    if (cell != null) {
                        //匹配列的数据类型
                        int cellType = cell.getCellType();
                        String value = null;
                        switch (cellType) {
                            case HSSFCell.CELL_TYPE_STRING:   //字符串
                                value = cell.getStringCellValue();
                                break;
                            case HSSFCell.CELL_TYPE_BOOLEAN:  //布尔
                                value = String.valueOf(cell.getBooleanCellValue());
                                break;
                            case HSSFCell.CELL_TYPE_BLANK:  //空
                                break;
                            case HSSFCell.CELL_TYPE_NUMERIC:  //数字(日期、普通数字)
                                if (HSSFDateUtil.isCellDateFormatted(cell)) { //日期
                                    Date date = cell.getDateCellValue();
                                    value = new DateTime(date).toString("yyyy-MM-dd");
                                } else {
                                    //不是日期格式,防止数字过长
                                    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                                    value = cell.toString();
                                }
                                break;
                            case HSSFCell.CELL_TYPE_ERROR:
                                break;
                        }
                        switch (j){
                            case 0 : areaEntity.setId(Integer.parseInt(value));
                            case 1 : areaEntity.setAreaid(value);
                            case 2 : areaEntity.setArea(value);
                            case 3 : areaEntity.setCityid(value);
                        }
 
                    }
                }
            }
             //保存数据库
            areaService.save(areaEntity);
        }
    }
点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7