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


您可以在linkOfficial poi doc中的一些示例中找到有关不同样式的更多信息。

希望这可以帮到你。

谢谢

关于java - 使用APACHE POI在同一行的不同列中打印值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46851828/

10-10 16:50