使用Apache POI在xlsx文件中写入,在文件的最后一列获得预期的答案

时间:2017-03-18 10:09:48

标签: java apache-poi

我正在学习如何使用Apache poi在xlsx文件中编写,现在在下面的代码中我正在使用2个数组。 1.Month 2.Logging_Hours。

我正在使用Month数组在第一行中分配列名,它对我来说很好。现在我想要我的代码中的另一个数组Logging_Hours打印在每一列但我没有得到预期的答案,使用下面的代码。

For_Expected参考屏幕:“Expected_Xlsx” For_Actual请参阅屏幕:“Actual_Xlsx”

public class Writing_xlsx {

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

    Workbook wb = new XSSFWorkbook();

    Sheet sheet1=wb.createSheet("SheetOne");

    String [] Month={"January" , "Feb", "March","Apr"};
    int [] Logging_Hours={ 7 ,5, 9,10};
    int f=0;
    System.out.println(Month[0]);

    Row r=sheet1.createRow(f);

    for(int i=0;i<4;i++){

    r.createCell(i).setCellValue(Month[i]);   

    }

    for(int c=0;c<4;c++){}
        int d=0;
        while(d<4){

        for(int rn=1;rn<=4;rn++)    {

            r=sheet1.createRow(rn);
            r.createCell(d).setCellValue(Logging_Hours[rn-1]);
            System.out.println(Logging_Hours[rn-1]);

        }
        d++;
        }

        FileOutputStream fileOut = new FileOutputStream("workbook.xlsx");

    wb.write(fileOut);
    fileOut.close();    
    wb.close();

}

}

For_Expected参考屏幕:“Expected_Xlsx”

This is the expected screen after running the programm

For_Actual请参阅屏幕:“Actual_Xlsx”

This is the actual screen i am getting

提前感谢您,对不起我刚刚处于学习阶段的错误代码。

1 个答案:

答案 0 :(得分:2)

您需要两个for循环(嵌套)来写入数据,例如:

for (int rn = 1; rn <= 4; rn++) {
    Row row = sheet1.createRow(rn);
    for (int i = 0; i < 4; i++) {
        row.createCell(i).setCellValue(Month[rn-1]);
    }
}

当前for循环每行只创建一个cell并将值写入其中,而我们需要在每行的所有4个单元格中写入值。