使用APACHE POI在不同列的同一行中打印值

时间:2017-10-20 14:55:31

标签: java apache-poi

gradeList是字符串的ArrayList,其值为" 80"," 81" ......" 85"

     for(int y = 0; y < gradeList.size(); y++){
        HSSFRow row1 = worksheet.createRow((short) 1);//1
        HSSFCell cell1 =row1.createCell((short) y+1);//2
        cell1.setCellValue("" + gradeList.get(y));//3
        HSSFCellStyle cellStylei = workbook.createCellStyle();//4
        cellStylei.setFillForegroundColor(HSSFColor.GREEN.index);
        cell1.setCellStyle(cellStylei);//6
     }

代码输出:_,_,_,_,_,85。预期输出:80,81,82,83,84,85。

将代码更改为

    HSSFRow row1 = worksheet.createRow((short) 1);//1
    HSSFCell cell1;
    for(int y = 0; y < gradeList.size(); y++){

        cell1 = row1.createCell((short) y+1);//2
        cell1.setCellValue("" + gradeList.get(y));//3

    }
    HSSFCellStyle cellStylei = workbook.createCellStyle();//4
    cellStylei.setFillForegroundColor(HSSFColor.GREEN.index);//5

代码按照预期打印80,81,82,83,84和85但使用前六行代码只打印85.有人可以向我解释为什么第一个错误或不工作,如果可能的话还请你解释第4,5和6行是做什么的。

1 个答案:

答案 0 :(得分:1)

问题在于,在第一行代码第1行中,您为每个gradeList元素创建了相同的行,因此您将覆盖为元素80创建的行,使用元素81创建的行,因为你只有最后一个。

如果修改第一个代码并为每个gradeList元素创建一个不同的行,则可以看到添加了所有值,例如:

HSSFRow row1 = sheet.createRow((short) y +1);//1

在第4行中,您将创建要应用于单元格的样式:

HSSFCellStyle cellStylei = workbook.createCellStyle();//4

在第5行中,您将前景填充颜色添加到绿色

cellStylei.setFillForegroundColor(HSSFColor.GREEN.index);//5

在第6行中,您要将样式添加到单元格

cell1.setCellStyle(cellStylei);//6

您可以在link以及Official poi doc

中的一些示例中找到有关不同样式的更多信息

希望这可以帮到你。

谢谢