java excel 批量导入

    /**
     * 解析上传的excel, 默认只解析第一张Sheet
     *
     * @param file     excel
     * @param startRow 数据开始行
     * @return List<String [ ]>
     * @throws IOException
     */
    public static List<String[]> getExcelData(MultipartFile file, int startRow) throws IOException {
        int resultSize = 0;
        ArrayList<String[]> resultData = new ArrayList<>(resultSize);
        if (!checkFile(file)) {
            //log.error("上传的excel文件格式有问题");
            return resultData;
        }
        //获得Workbook工作薄对象
        Workbook workbook = getWorkBook(file);
        if (workbook != null) {
            //获取第一张sheet工作表
            Sheet sheet = workbook.getSheetAt(0);
            if (sheet == null) {
                return resultData;
            }
            // 重新初始化List结果大小
            resultSize = sheet.getLastRowNum() + 1;
            //获得当前sheet的开始行
            int firstRowNum = sheet.getFirstRowNum();
            //获得当前sheet的结束行
            int lastRowNum = sheet.getLastRowNum();
            //循环除了startRow的所有行,如果要循环除第一行以外的就firstRowNum+1
            for (int rowNum = firstRowNum + startRow; rowNum <= lastRowNum; rowNum++) {
                //获得当前行
                Row row = sheet.getRow(rowNum);
                if (rowIsEmpty(row)) {
                    break;
                }
                //获得当前行的开始列
                int firstCellNum = row.getFirstCellNum();
                //获得当前行的列数
                int lastCellNum = row.getLastCellNum();
                String[] cells = new String[lastCellNum];
                //循环当前行
                for (int cellNum = firstCellNum; cellNum < lastCellNum; cellNum++) {
                    Cell cell = row.getCell(cellNum);
                    cells[cellNum] = getCellValue(cell);
                }
                resultData.add(cells);
            }
            workbook.close();
        }
        return resultData;
    }

使用上述方法将前台传来的 excel文件 转换为一个 List<String[]> ,然后循环List<String[]> 将 excel中的数据写入数据库。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐