luoyb
2021-03-11 55cd1ac1b843cc6c19100d7e23b4276e4a8bc5a3
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/PoiImportExcel.java
@@ -29,11 +29,11 @@
    * @return
    * @throws IOException
    */
   public List<List<Object>> getListByExcel(InputStream in, String fileName) throws Exception {
   public static List<List<Object>> getListByExcel(InputStream in, String fileName) throws Exception {
      List<List<Object>> list = null;
      // 创建Excel工作薄
      Workbook work = this.getWorkbook(in, fileName);
      Workbook work = getWorkbook(in, fileName);
      if (null == work) {
         throw new Exception("创建Excel工作薄为空!");
      }
@@ -79,8 +79,8 @@
      // 遍历当前sheet中的所有行
      /*
       * int countCellNum = 0; for (int j = sheet.getFirstRowNum(); j <=
       * sheet.getLastRowNum(); j++) { row = sheet.getRow(j); if (row == null
       * || row.getFirstCellNum() == j) { if (row != null) countCellNum =
       * sheet.getLastRowNum(); j++) { row = sheet.getRow(j); if (row == null ||
       * row.getFirstCellNum() == j) { if (row != null) countCellNum =
       * row.getLastCellNum(); continue; }
       * 
       * // 遍历所有的列 List<Object> li = new ArrayList<Object>(); for (int y = row
@@ -95,13 +95,73 @@
   }
   /**
    * 描述:获取IO流中的数据,组装成List<List<List<Object>>>对象,多个sheet
    *
    * @param in,fileName
    * @return
    * @throws IOException
    */
   public static List<List<List<Object>>> getMulitListByExcel(InputStream in, String fileName) throws Exception {
      List<List<Object>> list = null;
      // 创建Excel工作薄
      Workbook work = getWorkbook(in, fileName);
      if (null == work) {
         throw new Exception("创建Excel工作薄为空!");
      }
      List<List<List<Object>>> returnList = new ArrayList<List<List<Object>>>();
      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();
         }
         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) {
               // 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<>());
            }
         }
         work.close();
         returnList.add(list);
      }
      return returnList;
   }
   /**
    * 描述:根据文件后缀,自适应上传文件的版本
    * 
    * @param inStr,fileName
    * @return
    * @throws Exception
    */
   public Workbook getWorkbook(InputStream inStr, String fileName) throws Exception {
   public static Workbook getWorkbook(InputStream inStr, String fileName) throws Exception {
      Workbook wb = null;
      String fileType = fileName.substring(fileName.lastIndexOf("."));
      if (excel2003L.equals(fileType)) {
@@ -121,7 +181,7 @@
    * @return
    */
   @SuppressWarnings("deprecation")
   public Object getCellValue(Cell cell) {
   public static Object getCellValue(Cell cell) {
      try {
         Object value = null;