2016-03-18 315 views
0

我嘗試比較兩個不同的日期(第一個日期=現在+5年,存儲在名稱爲future的變量中,第二個日期來自Excel表格中連續的每個單元格),如果其中一個是在燧石後面,那麼我想刪除它。刪除工作正常,但我對函數shiftRows有很大的問題。它不工作,我不知道爲什麼不!有人能幫我解決這個問題嗎?Java POI「shiftRows」無法正常工作

for(int i = zeile + 1; i <= lastRowNum; i++) { 
    Row row1 = sheet.getRow(i); 
    String dateStr = row1.getCell(spalte).getDateCellValue().toString(); 
    DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.US); 

    Date date1 = null; 
    try { 
     date1 = (Date) formatter.parse(dateStr); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

    if (date1.after(future)) { 
     sheet.removeRow(sheet.getRow(i)); // remove Row, works good! 
     if (i >= 0 && i < lastRowNum) { 
      sheet.shiftRows(i+1, lastRowNum, -1); // shiftRows doesn't work!?!?!?! Need help! 
     }else if (i == lastRowNum) { //special removing if the last row ist one of them witch should be removed 
      Row removingRow = sheet.getRow(i); 
      sheet.removeRow(removingRow); 
     } 
    } 
} 
+1

它是如何不工作? –

+1

目前還不清楚* shiftRows中哪些*不起作用。你有錯誤嗎?它做錯了什麼?它什麼都不做? – tmthydvnprt

+0

異常在線程 「AWT-EventQueue的-0」 顯示java.lang.NullPointerException \t在Hauptanwendung.Hauptfenster $ 2.actionPerformed(Hauptfenster.java:191) \t在javax.swing.AbstractButton.fireActionPerformed(來源不明) – hamza

回答

0
This code works: 


for(int i = zeile + 1; i <= sheet.getLastRowNum(); i++) { 
    Row row1 = sheet.getRow(i); 
    String dateStr = row1.getCell(spalte).getDateCellValue().toString(); 
    DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.US); 

    Date date1 = null; 
    try { 
     date1 = (Date) formatter.parse(dateStr); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

    if (date1.after(future)) { 
     sheet.removeRow(sheet.getRow(i)); // remove Row, works good! 
     if (i >= 0 && i < sheet.getLastRowNum()) { 
      sheet.shiftRows(i+1, sheet.getLastRowNum(), -1); 
      i--; 
     } else if (i == sheet.getLastRowNum()) {  
      Row removingRow = sheet.getRow(i); 
      sheet.removeRow(removingRow); 
     } 
    } 
}