POI读取execl

2021-11-26  本文已影响0人  一曲三月
//poi
            Workbook workbook = new XSSFWorkbook(inputStream);
            org.apache.poi.ss.usermodel.Sheet sheetAt = workbook.getSheetAt(0);
            Row row_1 = sheetAt.getRow(0);
            //列数
            short lastCellNumrow = row_1.getLastCellNum();
            StringBuilder sb = new StringBuilder();
            sb.append(sql.substring(0, sql.lastIndexOf(')')));
            //行数
            int rowCount = sheetAt.getPhysicalNumberOfRows();
            for(int rowNum = 1; rowNum < rowCount; rowNum++){
                Row rowData = sheetAt.getRow(rowNum);
                if(rowData != null){
                    //获得该行的列总数目
                    short firstCellNum = rowData.getFirstCellNum();
                    if(firstCellNum!=0){
                       break;
                    }
//getPhysicalNumberOfCells 是获取不为空的列个数。
//getLastCellNum 是获取最后一个不为空的列是第几个
//                    int lineCount = rowData.getPhysicalNumberOfCells();
                    short lastCellNum = rowData.getLastCellNum();
                    for(int lineNum = 0; lineNum < lastCellNum ;lineNum++){
//                       System.out.print("第" + rowNum +"行,第" + lineNum +"列:");
                        Cell cell = rowData.getCell(lineNum);
                        if(cell==null){
                            sb.append(null + ",");
                        }
                        if(cell!=null) {
                            if(cell.getColumnIndex()!=lineNum){
                                cell.setBlank();
                                System.out.println("空值"+cell);
                            }
                            CellType cellType = cell.getCellType();
                            switch (cellType) {
                                case STRING:
                                    sb.append("'" + cell.getStringCellValue() + "'" + ",");
                                    break;
                                case BOOLEAN:
                                    sb.append("'" + cell.getBooleanCellValue() + "'" + ",");
                                    break;
                                case BLANK:
                                    sb.append(null + ",");
                                    break;
                                case ERROR:
                                    System.out.println("没有该数据类型");
                                    break;
                                case NUMERIC:
                                    //如果是日期就直接输出,否则就装换为String,然后输出
                                    if (DateUtil.isCellDateFormatted(cell)) {
                                        String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
                                                .format(cell.getDateCellValue());
                                        sb.append("'" + format + "'" + ",");
                                        break;
                                    } else {
                                        cell.setCellType(CellType.NUMERIC);
                                        sb.append("'" + cell.toString() + "'" + ",");
                                        break;
                                    }
//                                case FORMULA:
//                                    String formula = cell.getCellFormula();
//                                    System.out.println("公式:" + formula); break;
                                default:
                                    System.out.println("该位置没有数据");
                                    break;
                            }
                        }
                    }
上一篇 下一篇

猜你喜欢

热点阅读