如何使用java在excel中按单元格设置不同的颜色单元格

时间:2017-11-23 07:47:02

标签: java

for(int j=0;j<maxIncrementalLayer;j++){ 

        switch(j){

        case 0:{
            style.setFillBackgroundColor(IndexedColors.SKY_BLUE.getIndex());
            break;
        }
        case 1:{
            style.setFillBackgroundColor(IndexedColors.DARK_GREEN.getIndex());
            break;
        }
        case 2:{
            style.setFillBackgroundColor(IndexedColors.LIGHT_YELLOW.getIndex());
            break;
        }

        }   
maxIncrementalLayer中的

将获得一些数字,直到该数字需要为每个单元格设置不同的颜色 如果我们得到超过20,需要为那些单元格设置不同的颜色

private void writeHeader(int maxIncrementalLayer, XSSFRow row, CellStyle style) { 
    int i=0, k=0; 
    for(int j=0;j<maxIncrementalLayer;j++){ 
        switch(j){ 
        case 0:{ 
            style.setFillBackgroundColor(IndexedColors.SKY_BLUE.getIndex‌​()); 
            break; 
            }
        row.createCell(i++).setCellValue("AAA"); 
        row.getCell(k++).setCellStyle(style); 
        row.createCell(i++).setCellValue("BBB"); 
        row.getCell(k++).setCellStyle(style); 
        row.createCell(i++).setCellValue("CCC"); 
        row.getCell(k++).setCellStyle(style); 
        } 
    }
}

1 个答案:

答案 0 :(得分:0)

String[] headers = new String[] { "AA","BB","CC" };     
    int i=0,k=0,m=0;
        for(int j=0;j<maxIncrementalLayer;j++){
            m++;
            if(m==1){
                CellStyle style = template.createCellStyle();
                style.setFont(font);
                style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
                style.setFillForegroundColor(IndexedColors.GOLD.getIndex());
                style.setFillBackgroundColor(new HSSFColor.GOLD().getIndex());

                for (int rn = 0; rn < headers.length; rn++) {
                    row.createCell(i++).setCellValue(headers[rn]);
                    row.getCell(k++).setCellStyle(style);
              }
            }else if(m==2){
                CellStyle style1 = template.createCellStyle();
                style1.setFont(font);
                style1.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
                style1.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex());
                style1.setFillBackgroundColor(new HSSFColor.LIGHT_BLUE().getIndex());
                for (int rn = 0; rn < headers.length; rn++) {

                    row.createCell(i++).setCellValue(headers[rn]);
                    row.getCell(k++).setCellStyle(style1);
              }
            }else if(m==3){
                CellStyle style2 = template.createCellStyle();
                style2.setFont(font);
                style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);              style2.setFillForegroundColor(IndexedColors.LIGHT_GREEN.getIndex());
                style2.setFillBackgroundColor(new HSSFColor.LIGHT_GREEN().getIndex());
                for (int rn = 0; rn < headers.length; rn++) {
                    row.createCell(i++).setCellValue(headers[rn]);
                    row.getCell(k++).setCellStyle(style2);
              }
     m=0;
    }

we need to create for each color one CellStyle object