gpt4 book ai didi

java - 如何使用 APACHE POI HSSF 突出显示 Excel 中的单元格

转载 作者:行者123 更新时间:2023-12-02 12:06:18 24 4
gpt4 key购买 nike

public class createChart {

public static void main(String[] args) {
ArrayList<Integer> studentList = new ArrayList<>();
ArrayList<Integer> gradeList = new ArrayList<>();
ArrayList<String> header = new ArrayList<>();

header.add("Attendance Sheet");

for(int i = 1; i <= 20; i++){
studentList.add(i);
if(i <= 20){
gradeList.add((80+i));
}

}

int bordernum = 2;
try {
FileOutputStream fileOut = new FileOutputStream("Attendance Sheet.xls");
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet worksheet = workbook.createSheet("Attendance sheet");



// row 1 for Prinitng attendance sheet in center
HSSFRow row0 = worksheet.createRow((short) 0);//1
HSSFCell cellmid = row0.createCell((short) (gradeList.size()/2)-1);//2
cellmid.setCellValue(header.get(0));//3
HSSFCellStyle cellStylem = workbook.createCellStyle();//4
cellStylem.setFillForegroundColor(HSSFColor.GOLD.index);//5
cellmid.setCellStyle(cellStylem);//6
createBorders(workbook, cellmid, 1);
HSSFCell cellmid2 = row0.createCell((short) (gradeList.size()/2));//2
createBorders(workbook, cellmid2, 1);



// row 2 with all the dates in the correct place
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
createBorders(workbook, cell1, bordernum);

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



// row 3 and on until the studentList.size() create the box.
int counter = 0;
for(int stu = 2; stu <= (studentList.size()+1); stu++){
HSSFRow Row = worksheet.createRow((short) stu);//1
for(int gr = 0; gr <= gradeList.size(); gr++){
if(gr == 0){
HSSFCell cell = Row.createCell((short) 0);//2
cell.setCellValue(studentList.get(counter));//3
HSSFCellStyle cellStyle2 = workbook.createCellStyle();//4
cellStyle2.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
cellStyle2.setFillForegroundColor(HSSFColor.GOLD.index);//5
cell.setCellStyle(cellStyle2);//6
createBorders(workbook, cell, 2);
}else{
HSSFCell Cell = Row.createCell((short) gr);//2
createBorders(workbook, Cell, 3);
}


}
counter++;
}
workbook.write(fileOut);
fileOut.flush();
fileOut.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
public static void createBorders(HSSFWorkbook workbook,HSSFCell cell, int x){
if( x == 1){
HSSFCellStyle style = workbook.createCellStyle();
//style.setFillBackgroundColor(HSSFColor.HSSFColorPredefined.LIGHT_BLUE.getIndex());
//style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
style.setBorderBottom(BorderStyle.THICK);
style.setBottomBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
style.setBorderLeft(BorderStyle.THICK);
style.setLeftBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
style.setBorderRight(BorderStyle.THICK);
style.setRightBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
style.setBorderTop(BorderStyle.THICK);
style.setTopBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
cell.setCellStyle(style);
}
else if(x == 2){
HSSFCellStyle style = workbook.createCellStyle();
//style.setFillBackgroundColor(HSSFColor.HSSFColorPredefined.LIGHT_BLUE.getIndex());
//style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
style.setBorderBottom(BorderStyle.MEDIUM);
style.setBottomBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
style.setBorderLeft(BorderStyle.MEDIUM);
style.setLeftBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
style.setBorderRight(BorderStyle.MEDIUM);
style.setRightBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
style.setBorderTop(BorderStyle.MEDIUM);
style.setTopBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
cell.setCellStyle(style);
}else {
HSSFCellStyle style = workbook.createCellStyle();
//style.setFillBackgroundColor(HSSFColor.HSSFColorPredefined.AQUA.getIndex());
//style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
style.setBorderBottom(BorderStyle.THIN);
style.setBottomBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
style.setBorderLeft(BorderStyle.THIN);
style.setLeftBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
style.setBorderRight(BorderStyle.THIN);
style.setRightBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
style.setBorderTop(BorderStyle.THIN);
style.setTopBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
cell.setCellStyle(style);
}

}

代码将studentList(第3行到studentList.size()+2)中的值写入第0列的每行,并将gradesList(第1列第1行到gradesList.size()+1)中的值写入文件Attendance图表

我应该编辑什么,以便可以用浅绿色突出显示所有学生列表,用浅橙色突出显示成绩列表,用黄色突出显示标题(标题),用浅蓝色突出显示其余空白框?

Image 1 is the product of the code above Image 2 I need my sheet to look like this

我需要帮助将工作表从图像 1 转换为图像 2

最佳答案

您在第 5 行中创建了背景颜色,但在创建边框时覆盖了它。您必须同时应用所有样式才能解决问题。

除此之外,您还必须包含 FillPattern,例如:

        style.setFillForegroundColor(HSSFColor.GOLD.index);
style.setFillPattern(CellStyle.SOLID_FOREGROUND);

您可以在 Apache POI Quick Guide 中找到示例

希望这能有所帮助。谢谢。

关于java - 如何使用 APACHE POI HSSF 突出显示 Excel 中的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46891125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com