2013-04-24 51 views
0

我不確定,也許我們在這裏有類似的請求,我很愚蠢地找到正確的請求。如何在xlsx中迭代正確的行和單元格

我的英語不太好,我希望我能解釋我需要什麼。我有任務,遍歷一個xlsx文件,其中包含關於一個Sprint和我們的teamcollegues缺席的信息。

我需要幫助迭代,我是一個noob,我試着用'循環',但它完全混淆了我。

這裏是我現在有:

public void go() throws Exception, FileNotFoundException, IOException { 
    FileInputStream fis = new FileInputStream(fileName); 
    Workbook wb = WorkbookFactory.create(fis); 
    Sheet sheet = wb.getSheetAt(25); 

    Row ersteReihe = sheet.getRow(0); 
    Cell datum1 = ersteReihe.getCell(1); //Date in column B1 


    System.out.println("\n\nAbwesenheit " +sheet.getSheetName()); 

    // Hole aus der zweiten Reihe den ersten Namen: 
    Row zweiteReihe = sheet.getRow(1); 
    Cell name1 = zweiteReihe.getCell(0);  //Name of employee 
    Cell isDa1 = zweiteReihe.getCell(1);  //Information with 1 and 0 who is absence 
    int zell1 = (int) isDa1.getNumericCellValue(); 
    if (zell1 == 0) { 
     System.out.print("\n" + name1.getStringCellValue() + " ist am " + datum1 + " nicht Anwesend "); 
    } 
    // Hole aus der zweiten Reihe den ersten Namen: 
    Row dritteReihe = sheet.getRow(2); 
    Cell name2 = dritteReihe.getCell(0); 
    Cell isDa2 = dritteReihe.getCell(1); 
    int zell2 = (int) isDa2.getNumericCellValue(); 
    if (zell2 == 0) { 
     System.out.print("\n" + name2.getStringCellValue() + " ist am " + datum1 + " nicht Anwesend "); 
    } 
    // Hole aus der zweiten Reihe den ersten Namen: 
    Row vierteReihe = sheet.getRow(3); 
    Cell name3 = vierteReihe.getCell(0); 
    Cell isDa3 = vierteReihe.getCell(1); 
    int zell3 = (int) isDa3.getNumericCellValue(); 
    if (zell3 == 0) { 
     System.out.print("\n" + name3.getStringCellValue() + " ist am " + datum1 + " nicht Anwesend "); 
    } 
    // Hole aus der zweiten Reihe den ersten Namen: 
    Row fuenfteReihe = sheet.getRow(4); 
    Cell name4 = fuenfteReihe.getCell(0); 
    Cell isDa4 = fuenfteReihe.getCell(1); 
    int zell4 = (int) isDa4.getNumericCellValue(); 
    if (zell4 == 0) { 
     System.out.print("\n" + name4.getStringCellValue() + " ist am " + datum1 + " nicht Anwesend "); 
    } 
    // Hole aus der zweiten Reihe den ersten Namen: 
    Row sechsteReihe = sheet.getRow(5); 
    Cell name5 = sechsteReihe.getCell(0); 
    Cell isDa5 = zweiteReihe.getCell(1); 
    int zell5 = (int) isDa5.getNumericCellValue(); 
    if (zell5 == 0) { 
     System.out.print("\n" + name5.getStringCellValue() + " ist am " + datum1 + " nicht Anwesend "); 
    } 
    // Hole aus der zweiten Reihe den ersten Namen: 
    Row siebteReihe = sheet.getRow(6); 
    Cell name6 = siebteReihe.getCell(0); 
    Cell isDa6 = siebteReihe.getCell(1); 
    int zell6 = (int) isDa6.getNumericCellValue(); 
    if (zell6 == 0) { 
     System.out.print("\n" + name6.getStringCellValue() + " ist am " + datum1 + " nicht Anwesend "); 
    } 

    fis.close(); 

} 

我要瘋了。因爲我無法找到一個正確的迭代的正確解決方案:(

有人能幫助我嗎?請手下留情我:)

非常感謝! 乾杯Adissa

回答

2

由於表和行Iterables,遍歷行和單元格是很容易的:

Sheet sheet = ... 
for (Row row : sheet) { 
    for (Cell cell : row) { 
     // Actual work on cell here 
    } 
} 
+0

我得到這個現在: – kemistrie 2013-04-24 10:29:13

+0

OMG我很愚蠢的插入,我現在的代碼: ( – kemistrie 2013-04-24 10:31:41

+0

好吧,我現在不知道它是如何工作的...我用for循環完成了它,並且在最後一行後出現nullpointerException,所以我想我必須使用類似Row.RETURN_NULL_AND_BLANK的東西? – kemistrie 2013-04-24 10:34:38

相關問題