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行中,您正在为每个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中的一些示例中找到有关不同样式的更多信息。
希望这可以帮到你。
谢谢
关于java - 使用APACHE POI在同一行的不同列中打印值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46851828/