“Java POI”;shiftRows“;不';我工作不正常

“Java POI”;shiftRows“;不';我工作不正常,java,excel,apache-poi,Java,Excel,Apache Poi,我尝试比较两个不同的日期(第一个日期=现在+5年,存储在一个变量中,每个单元格的名称为future,第二个日期来自excel表格),如果其中一个日期在firestone之后,我想删除它。移除工作正常,但是我在函数shiftRows方面有很大的问题。它不起作用,我也不知道为什么不起作用!有人能帮我解决这个问题吗 for(int i = zeile + 1; i <= lastRowNum; i++) { Row row1 = sheet.getRow(i); String d

我尝试比较两个不同的日期(第一个日期=现在+5年,存储在一个变量中,每个单元格的名称为future,第二个日期来自excel表格),如果其中一个日期在firestone之后,我想删除它。移除工作正常,但是我在函数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);
        }
    }
}
for(int i=zeile+1;i=0&&i
此代码适用于:
对于(int i=zeile+1;i=0&&i
它是如何工作的?不清楚在
shiftRows
中什么不工作。你有错误吗?它做错什么了吗?它什么都不做吗?Hauptanwendung.Hauptfenster$2.actionPerformed(Hauptfenster.java:191)javax.swing.AbstractButton.fireActionPerformed(未知源代码)@hamza线程“AWT-EventQueue-0”中的异常我在你的异常中没有看到任何POI代码,看起来您自己的代码正在崩溃?这是一个
NullPointerException
,因此
row1
为null或
row1.getCell(spalte)
为null。在进一步使用这些对象之前,请检查是否存在此问题。
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);
        }
    }
}