luoyb
2024-09-19 3cadfe55e0dcec2a02786956ad2776258e0e736c
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/PoiImportExcel.java
@@ -9,6 +9,7 @@
import java.util.List;
import cn.hutool.core.util.StrUtil;
import com.esotericsoftware.minlog.Log;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -111,56 +112,60 @@
         throw new Exception("创建Excel工作薄为空!");
      }
      List<List<List<Object>>> returnList = new ArrayList<List<List<Object>>>();
      for (Sheet sheet : work) {
         Row row = null;
         Cell cell = null;
      try {
            for (Sheet sheet : work) {
                Row row = null;
                Cell cell = null;
         list = new ArrayList<List<Object>>();
         if (sheet == null) {
            continue;
         }
         // 取得Excel的总列数,总行数
         int columns = 0;
         Row firstRow = sheet.getRow((short) 0);
         if (firstRow != null) {
            columns = firstRow.getPhysicalNumberOfCells();
         }
                list = new ArrayList<List<Object>>();
                if (sheet == null) {
                    continue;
                }
                // 取得Excel的总列数,总行数
                int columns = 0;
                Row firstRow = sheet.getRow((short) 0);
                if (firstRow != null) {
                    columns = firstRow.getPhysicalNumberOfCells();
                }
         int rows = sheet.getPhysicalNumberOfRows();
         List<Object> dataRow = null;
                int rows = sheet.getPhysicalNumberOfRows();
                List<Object> dataRow = null;
         // 首行为定义标题的行,数据从第2行开始
         for (int i = 1; i < rows; i++) {
            dataRow = new ArrayList<Object>();
            // 获取行
            row = sheet.getRow(i);
            if (row == null) {
               break;
            }
                // 首行为定义标题的行,数据从第2行开始
                for (int i = 1; i < rows; i++) {
                    dataRow = new ArrayList<Object>();
                    // 获取行
                    row = sheet.getRow(i);
                    if (row == null) {
                        break;
                    }
            cell = row.getCell(0);
            if (StrUtil.isBlank(getCellValue(cell).toString())) {
               break;
            }
                    cell = row.getCell(0);
                    if (StrUtil.isBlank(getCellValue(cell).toString())) {
                        break;
                    }
            if (row != null) {
               // columns=row.getPhysicalNumberOfCells();//不在这里设置,通过firstRow来获取列数信息。
               for (int j = 0; j < columns; j++) {
                  // 获取某行某列的某一个单元格
                  cell = row.getCell(j);
                    if (row != null) {
                        // columns=row.getPhysicalNumberOfCells();//不在这里设置,通过firstRow来获取列数信息。
                        for (int j = 0; j < columns; j++) {
                            // 获取某行某列的某一个单元格
                            cell = row.getCell(j);
                  // 往dataRow存值
                  dataRow.add(getCellValue(cell));
               }
               list.add(dataRow);
            } else {
               list.add(new ArrayList<>());
            }
         }
                            // 往dataRow存值
                            dataRow.add(getCellValue(cell));
                        }
                        list.add(dataRow);
                    } else {
                        list.add(new ArrayList<>());
                    }
                }
         work.close();
         returnList.add(list);
      }
                work.close();
                returnList.add(list);
            }
        } catch (Exception e){
            Log.error(e.getMessage());
        }
      return returnList;
   }
@@ -200,25 +205,23 @@
            value = "";
            return value;
         }
         DecimalFormat df = new DecimalFormat("0"); // 格式化number String字符
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 日期格式化
         DecimalFormat df2 = new DecimalFormat("0.00"); // 格式化数字
            // 格式化number String字符
         DecimalFormat df = new DecimalFormat("0");
            // 日期格式化
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            // 格式化数字
         DecimalFormat df2 = new DecimalFormat("0.00");
         switch (cell.getCellType()) {
         case Cell.CELL_TYPE_STRING:
            value = cell.getRichStringCellValue().getString();
            break;
         case Cell.CELL_TYPE_NUMERIC:
            if (HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式
               if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")
                     || cell.getCellStyle().getDataFormat() == 176) {
                  sdf = new SimpleDateFormat("HH:mm");
               }
               Date date = cell.getDateCellValue();
               value = sdf.format(date);
            if (HSSFDateUtil.isCellDateFormatted(cell)) {
                        // 处理日期格式、时间格式
                    Date date = cell.getDateCellValue();
                    sdf = new SimpleDateFormat("yyyy-MM-dd");
                    value = sdf.format(date);
            } else if (cell.getCellStyle().getDataFormat() == 58) {
               // 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58)
               SimpleDateFormat sdf2 = new SimpleDateFormat("MM-dd");