2016-05-30 8 views
0

Ich benutze Apache poi, um eine .xlsx-Datei zu importieren, die ich in meinem Desktop-Bereich habe.Eine Zeile pro Zeit/nur spezifische Spalte lesen und Objekt erstellen

Mit dem untenstehenden Code kann ich das Loch Blatt, das ich will lesen.

Aber ich möchte nur eine Zeile pro Zeit und nur bestimmte Spalten pro Zeile lesen (zum Beispiel möchte ich nur Spalte A, F und G aus der ersten Zeile und speichern Sie es als Objekt, dann das gleiche für die zweite Zeile, dritte Zeile usw.)

Wie kann ich es tun?

public class main { 
     public static void main(String[] args) throws Exception { 
      InputStream ExcelFileToRead = new FileInputStream("C:/User/Desktop/test.xlsx"); 
      XSSFWorkbook wb = new XSSFWorkbook(ExcelFileToRead); 

      XSSFSheet sheet=wb.getSheetAt(0); 
      XSSFRow row; 
      XSSFCell cell; 

      Iterator rows = sheet.rowIterator(); 


      while (rows.hasNext()) 
      { 
       row=(XSSFRow) rows.next(); 
       Iterator cells = row.cellIterator(); 

       while (cells.hasNext()) 
       { 
        cell=(XSSFCell) cells.next(); 

        if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) 
        { 
         System.out.print(cell.getStringCellValue()+" "); 
        } 
        else if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) 
        { 
         System.out.print(cell.getNumericCellValue()+" "); 
        } 
        else 
        { 
        } 
       } 
       System.out.println(); 
      } 
     } 
    } 
+1

Sie Did [versuchen, die Apache POI-Dokumentation zu lesen auf iterieren Zeilen und Zellen] (http://poi.apache.org/spreadsheet/quick-guide. html # Iterator)? Und alles? Was passiert, wenn du es tust? (Tipp - die Antwort, die Sie brauchen, ist in den Dokumenten!) – Gagravarr

Antwort

1

eine bestimmte Zeile aus dem Objekt Sheet

Sheet.getRow(index) 

Verwendung abgerufen werden, in dem eine Null index Nummer basierend Zeile befindet. Das heißt, um Zeile 1 zu lesen, müssen Sie die Zeile mit dem Index Null, Zeile 2 mit dem Index 1 und so weiter abrufen. Gleichermaßen kann eine bestimmte Zelle abgerufen werden daraus Objekt

Row.getCell(index) 

Erneut Index verwendet, ist eine Null-basierte Zellzahl in dem Zellenspalte A bei Index 0 ist, ist B-Säule bei Index 1 und so weiter. Deshalb bei der B2 die Zelle abzurufen, könnten Sie

Cell cell = Sheet.getRow(1).getCell(1); 
Verwandte Themen