2013-08-28 6 views
25

Excelの特定の行の列の数が必要です。そんなことがあるものか?私はPOI APIを使用しましたJavaを使用して与えられたExcelの特定の行の列の数を取得

しかし、私は列の数を7にすることができます。

try 
      { 
       fileInputStream = new FileInputStream(file); 
       workbook = new HSSFWorkbook(fileInputStream); 
       Sheet sheet = workbook.getSheet("0"); 


       int numberOfCells = 0; 
       Iterator rowIterator = sheet.rowIterator(); 
       /** 
       * Escape the header row * 
       */ 
       if (rowIterator.hasNext()) 
       { 
        Row headerRow = (Row) rowIterator.next(); 
        //get the number of cells in the header row 
        numberOfCells = headerRow.getPhysicalNumberOfCells(); 
       } 
       System.out.println("number of cells "+numberOfCells); 

} 

特定の行番号の列の数を10としたいとします。 ザ・Excelの列は、あなたが行うことができる2つのものがある

答えて

44

同じではありません

使用

int noOfColumns = sh.getRow(0).getPhysicalNumberOfCells(); 

またはそれらの間の

    細かい違いがあり

    int noOfColumns = sh.getRow(0).getLastCellNum(); 
    

  1. O ption 1は実際に内容で満たされている列の数を返します(10列の2列目が満たされていない場合は9を返します)
  2. オプション2は最後の列のインデックスを返します。したがってhttp://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Row.html([ `getLastCellNum()`]による 'getLastCellNum()'
+2

行います#getLastCellNum())、1つは既に追加されているので、自分で追加することはできません。 – rgettman

+0

変更が加えられて編集されました。同じことを指摘してくれてありがとう。 –

0
/** Count max number of nonempty cells in sheet rows */ 
private int getColumnsCount(XSSFSheet xssfSheet) { 
    int result = 0; 
    Iterator<Row> rowIterator = xssfSheet.iterator(); 
    while (rowIterator.hasNext()) { 
     Row row = rowIterator.next(); 
     List<Cell> cells = new ArrayList<>(); 
     Iterator<Cell> cellIterator = row.cellIterator(); 
     while (cellIterator.hasNext()) { 
      cells.add(cellIterator.next()); 
     } 
     for (int i = cells.size(); i >= 0; i--) { 
      Cell cell = cells.get(i-1); 
      if (cell.toString().trim().isEmpty()) { 
       cells.remove(i-1); 
      } else { 
       result = cells.size() > result ? cells.size() : result; 
       break; 
      } 
     } 
    } 
    return result; 
} 
関連する問題