wie zu Lesen einen Wert aus der Spalte Name in Excel, Java

Wie kann ich Lesen Sie den Wert im Zusammenhang mit Bestimmten Spaltennamen mit Apache POI in Excel (xlsx).

Spaltennamen ist mein 1. Zeile der Excel-Tabelle .
Wert ist die Zeile, Die Y als Wert der Zelle .

Mein Input ist nur die Spalte Name ,
Ich brauche den Wert für den Namen der Spalte und Zeile hat den Wert "Y"

Unten ist die Excel-Tabelle

hier ich wenn geben Sie der Spalte den Namen "Namen" , sollte es wieder Wert ist "Jose"
Und "Alter" sollte es wieder 23

Habe ich versucht und gefunden, zwei codes mit verschiedenen loop-system , aber immer einige Fehler

public static void main(String[] args) throws Exception {

    File file =    new File("D:\\xcel.xlsx");
    FileInputStream inputStream = new FileInputStream(file);


     Workbook wb = new XSSFWorkbook(inputStream);
     Sheet sh = wb.getSheet("Sheet1");

    // Find the Column number Which has column name and row number 0

     Row row1 = sh.getRow(0);       
     int colNum = -1;
     for (int i = 0 ;i<=row1.getLastCellNum();i++){
         Cell cell1 = row1.getCell(i,Row.CREATE_NULL_AS_BLANK);
         String cellValue1 = cell1.getStringCellValue();
         if ("Employee".equals(cellValue1)){
              colNum = i ;
              break;}
        }



    // Find the Row number Which is "Y" and column number 1

     int rowNum = -1;        
     for (int j = 0 ;j<=sh.getLastRowNum()+1;j++){           
         Row row2 = sh.getRow(j); 
         Cell cell2 = row2.getCell(1,Row.CREATE_NULL_AS_BLANK);       
         String cellValue2 = cell2.getStringCellValue();
            if ("Y".equals(cellValue2))
            { rowNum = j ;
            break;}                     
        }



    Row r = sh.getRow(rowNum);
     String val = r.getCell(colNum).getStringCellValue();

     System.out.println("Row number is "+rowNum);
     System.out.println("Last row number :"+sh.getLastRowNum());
     System.out.println("Column number is "+colNum);
     System.out.println("Last Column number :"+sh.getRow(0).getLastCellNum());
     System.out.println("Value is "+val); 

}

Wenn ich den oben stehenden code ausführen , bekomme ich die Spalte mit der Nummer, selbst wenn es eine leere Zelle vorhanden ist, bevor es ,

aber für die Zeile , wenn es eine leere Zelle vorhanden sind, bevor Sie es , bekomme ich die Fehlermeldung Exception in thread "main" java.lang.NullPointerException
Aber es funktioniert gut, wenn es keine schwarzen Zelle.

Wieder in diese folgenden code , ich bekomme keine Fehler

Aber wenn meine Spalte name vorhanden ist, in der letzten Zelle ,dann wird die Letzte Handy-Nummer und meine Spalte Nummer sollte gleich sein , aber ich bekommen meine Spalte Anzahl ist um eins kleiner als die Letzte Zelle Nummer .

Aber für die Zeilennummer , seine feine , bin ich immer der gleichen Nummer .

Dieses problem ist für den ersten code, der auch

public static void main(String[] args) throws Exception {

    File file =    new File("D:\\xcel.xlsx");
    FileInputStream inputStream = new FileInputStream(file);


     Workbook wb = new XSSFWorkbook(inputStream);
     Sheet sh = wb.getSheet("Sheet1");

    // Find the Column number Which has column name and row number 0

     Row row1 = sh.getRow(0);       

     int colNum = -1;
     for (Cell cell : row1) {
            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                if (cell.getRichStringCellValue().getString().trim().equals("Employee")) {
                    colNum =  cell.getColumnIndex();                                   }
                                                             }
                                }

    // Find the Row number Which is "Y" and column number 1


     int rowNum = -1;
     for (Row row : sh) {
            for (Cell cell : row) {
                if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                    if (cell.getRichStringCellValue().getString().trim().equals("Y")) {
                        rowNum =  row.getRowNum();                                     }
                                                                 }
                                    }
                        }               


 //Get the required value
    Row r = sh.getRow(rowNum);
     String val = r.getCell(colNum).getStringCellValue();

     System.out.println("Row number is "+rowNum);
     System.out.println("Last row number :"+sh.getLastRowNum());
     System.out.println("Column number is "+colNum);
     System.out.println("Last Column number :"+sh.getRow(0).getLastCellNum());
     System.out.println("Value is "+val); 
  • Zelle.getCellType() ist veraltet, da der apache poi version 3.17
InformationsquelleAutor psaikia | 2016-06-04
Schreibe einen Kommentar