2013-08-28 22 views
25

Belirli bir satırın sütun sayısını excel olarak istiyorum. Bu nasıl mümkün olabilir? POI APIBelirli bir satırdaki belirli bir satırın sütun sayısını Java kullanarak kullanarak

kullandım, ancak yalnızca sütun sayısı 7'ye ulaşabilirim.

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); 

} 

Belirli bir satır numarasındaki sütun sayısını 10 olarak belirtmek istiyorum. excel sütun yapabileceğiniz iki şeyler vardır

cevap

44

aynı değildir

kullanım

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

veya aralarında

    ince bir fark vardır

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

  1. O ption 1, aslında içeriğiyle dolu olan sütunların hiçbirini verir (10 sütunun 2. sütunu doldurulmazsa 9 alırsınız)
  2. Seçenek 2 sadece son sütunun dizinini verir. Bu nedenle yapılır 'getLastCellNum()'
+2

[ 'getLastCellNum() '] (http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Row.html göre #getLastCellNum()), bir tane zaten eklendi, böylece bir tane kendiniz eklemezsiniz. – rgettman

+0

Değişikliklerle düzenlenmiştir. Aynı şey için teşekkürler. –

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; 
} 
İlgili konular