1. 程式人生 > >java獲得excel最後一列,最後一行

java獲得excel最後一列,最後一行

最近遇到一個需求是需要向excel表格中追加資料,由於報表格式要求需要按列新增,因此需要獲得excel表格最後一列值,然後列插入值:

  1. private static int findRealCloumns(XSSFSheet sheet, int... flag) {
  2.         int realCloumn = 0;
  3.         while (true) {
  4.             // 遍歷行數,獲取每行的最後一列
  5.             int total = 0;
  6.             for(int j : flag){
  7.                 XSSFRow row = sheet.getRow(j);
  8.                 if(row != null && row.getCell(realCloumn) != null && row.getCell(realCloumn).getCellType() < 6){
  9.                     row.getCell(realCloumn).setCellType(XSSFCell.CELL_TYPE_STRING);
  10.                 }
  11.                 if (row == null||row.getCell(realCloumn) == null||row.getCell(realCloumn).getStringCellValue().matches("^\\s+$")
  12.                         ||row.getCell(realCloumn).getCellType()>2) {
  13.                     total++;
  14.                 }
  15.                 // 如果需要列都是空說明就該返回
  16.                 if (total == flag.length) {
  17.                     return realCloumn;
  18.                 }
  19.             }
  20.             realCloumn++;
  21.         }
  22.     }

獲得excel最後一行

  1. public static int findRealRows(XSSFSheet sheet, int... flag) {
  2.         int rowReal = 0;
  3.         int rows = sheet.getPhysicalNumberOfRows();// 此處物理行數統計有錯誤,
  4.         for (int i = 0; i < rows; i++) {
  5.             XSSFRow row = sheet.getRow(i);
  6.             int total = 0;
  7.             for(int j : flag){
  8.                 // 將所有單元格設定為字串格式
  9.                 if(row != null && row.getCell(j) != null && row.getCell(j).getCellType() < 6){
  10.                     row.getCell(j).setCellType(XSSFCell.CELL_TYPE_STRING);
  11.                 }
  12.                 if (row == null ||row.getCell(j) == null||row.getCell(j).getStringCellValue().matches("^\\s+$")||row.getCell(j).getCellType()>2) {
  13.                     total++;
  14.                 }
  15.             }
  16.             // 如果需要列都是空說明就該返回
  17.             if (total == flag.length) {
  18.                 return rowReal;
  19.             } else {
  20.                 rowReal++;
  21.             }
  22.         }
  23.         return rowReal;
  24.     }

總結 :

       不論是excel最後一行還是最後一列,首先需要約定一行的前幾個單元格內容不能為空或者一列的前幾行單元格不能為空,否則判斷該行或該列為最後一行或列。