当前位置 博文首页 > 小小舍的博客:java用excel表格批量导入之解决手机号格式等问题

    小小舍的博客:java用excel表格批量导入之解决手机号格式等问题

    作者:[db:作者] 时间:2021-08-09 18:56

    因为要批量导入,所以要获取表格中的数据并拿到list集合,以便插入数据。

    但读取表格内容时也遇到了坑,以下是总结后的代码,希望帮助有同样困扰的程序员。

    ?

    /**
         * 读取表格数据
         * @param path 文件路径
         * @param maxColIx 最大读取列
         * @return
         */
        public static List<List<String>> readXlsx(String path,int maxColIx){
            URL url = null;
            InputStream fin = null;
            XSSFWorkbook xssfWorkbook = null;
            try {
                url = new URL(path);
                fin = url.openStream();
                xssfWorkbook = new XSSFWorkbook(fin);
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            List<List<String>> result = new ArrayList<>();
            // 循环当前页,并处理当前循环页
            XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);
            // 处理当前页,循环读取每一行 rowNum:从第几行开始读取
            for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
                XSSFRow row = xssfSheet.getRow(rowNum);
                int minColIx = row.getFirstCellNum();
    //            int maxColIx = xssfRow.getLastCellNum();//返回的是最后一列的列数,即等于总列数
                List<String> rowList = new ArrayList<String>();
                for (int j = minColIx; j < maxColIx; j++) {
                    String str = "";
                    XSSFCell cell = row.getCell(j);
                    if (null != cell) {
                        switch (cell.getCellType()) {
                            case NUMERIC: // 数值型
                                DecimalFormat df=new DecimalFormat("0");
                                str=df.format(cell.getNumericCellValue());
                                System.out.print(",数字:"+str);
                                break;
                            case STRING: // 字符串型
                                str = cell.getStringCellValue();
                                System.out.print(",字符串:"+str);
                                break;
                            case FORMULA: // 公式
                                str = cell.getCellFormula() + "";
                                break;
                            case BLANK: // 空值
                                break;
                            case BOOLEAN: //布尔型
                                str = cell.getBooleanCellValue()+"";
                                break;
                            case ERROR: // 错误
                                break;
                            default:
                                System.out.print("未知类型   ");
                                break;
                        }
                    }
                    rowList.add(str);
                }
                result.add(rowList);
            }
            return result;
        }
    cs