apache poi-如何编写并继续循环同一单元格中的行

时间:2018-10-11 00:27:59

标签: java apache-poi

我的循环遇到问题。我想做的是我要写下12月整个月的日期,然后再输入2019年的总日期。但是我现在遇到的问题是2019年的总日期没有显示在与2018年12月的总日相同的列的行下

我当前的输出(2018年12月31日的行号位于第34行:

MONTH
------
2018-12-01
2018-12-02
2018-12-03
2018-12-04
...
2018-12-31

我认为我的问题在于getRow和循环。请帮助我。

// month

    int maxDay = cal1.getActualMaximum(Calendar.DAY_OF_MONTH);

    for (int dec = 1; dec <= maxDay; dec++) {

        Row row3 = sheet.getRow(dec + 2);

        Cell cell1 = row3 .createCell(2);

        cal1.set(Calendar.YEAR, 2018);
        cal1.set(Calendar.MONTH, 11);
        cal1.set(Calendar.DAY_OF_MONTH, 1);

        cal1.set(Calendar.DAY_OF_MONTH, dec);

        java.util.Date date1 = cal1.getTime();

        cell1.setCellValue(formatter.format(date1));
    }

    // for total date of a year 2018

    for (int notdec = 1; notdec <= 365; notdec++) {

        Row row3 = sheet.getRow(maxDay+3);  

        Cell cell1 = row3.getCell(2);

        cal.set(Calendar.YEAR, 2019);

        cal.set(Calendar.DAY_OF_YEAR, notdec);

        java.util.Date date = cal.getTime();

        cell1.setCellValue(formatter.format(date));

    }

1 个答案:

答案 0 :(得分:0)

这是您的代码, 适用于2018

for (int dec = 1; dec <= maxDay; dec++) {
    Row row3 = sheet.getRow(dec + 2);
    Cell cell1 = row3 .createCell(2);
    cal1.set(Calendar.YEAR, 2018);
    cal1.set(Calendar.MONTH, 11);
    cal1.set(Calendar.DAY_OF_MONTH, 1);
    cal1.set(Calendar.DAY_OF_MONTH, dec);
    java.util.Date date1 = cal1.getTime();

    cell1.setCellValue(formatter.format(date1));
}

因此,在此基础上继续进行,一开始,使用相同的代码并仅更改需要更改的内容是合乎逻辑的

for (int notdec = 1; notdec <= 365; notdec++) {

    Row row3 = sheet.getRow(maxDay +3 + notdec);  // THIS

    Cell cell1 = row3.createCell(2);      // THIS

    cal1.set(Calendar.YEAR, 2019);       // THIS
    cal1.set(Calendar.DAY_OF_YEAR, notdec);   // THIS
    java.util.Date date1 = cal1.getTime();

    cell1.setCellValue(formatter.format(date1));
}

由于您没有输入所需的输出,我想这可能就是您想要的