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行是做什么的。
答案 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
中的一些示例中找到有关不同样式的更多信息希望这可以帮到你。
谢谢