您的位置:

使用EasyExcel设置单元格颜色

一、背景介绍

EasyExcel是基于Apache POI封装的Excel操作工具,可以方便地读写Excel文件。在Excel文件操作的过程中,经常需要设置单元格的样式,其中一个重要的样式就是单元格的颜色。

二、单元格背景颜色

通过EasyExcel可以方便地设置单元格的背景颜色,具体实现方式如下:

public void setCellBackgroundColor() throws IOException {
    // 创建工作簿
    ExcelWriter excelWriter = EasyExcel.write("demo.xlsx").build();
    WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build();

    // 构造数据
    List data = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        DemoData demoData = new DemoData();
        demoData.setName("小明");
        demoData.setAge(20);
        demoData.setContent("这是第" + (i + 1) + "行数据");
        // 设置第2列单元格的背景颜色为红色
        if (i == 1) {
            demoData.setContentStyle(EasyExcelUtils.createCellStyle(excelWriter, IndexedColors.RED.getIndex()));
        }
        data.add(demoData);
    }

    // 设置Excel表头
    List
   
    > head = new ArrayList<>();
    List
      head0 = new ArrayList<>();
    head0.add("姓名");
    head0.add("年龄");
    head0.add("内容");
    head.add(head0);

    // 写入Excel文件
    excelWriter.write(data, writeSheet, EasyExcelUtils.createCellStyle(excelWriter, IndexedColors.WHITE.getIndex()), EasyExcelUtils.createHeadStyle(excelWriter, IndexedColors.ORANGE.getIndex()), head);
    excelWriter.finish();
}

     
    
   
  

在上述代码中,我们通过EasyExcelUtils创建了两种不同的样式:EasyExcelUtils.createCellStyle()用于设置单元格样式,EasyExcelUtils.createHeadStyle()用于设置表头样式。这两种样式的设置方法一致,其中的IndexedColors.RED.getIndex()和IndexedColors.WHITE.getIndex()分别表示颜色值。

三、单元格字体颜色

除了设置单元格的背景颜色,我们还可以设置单元格的字体颜色。具体实现方式如下:

public void setCellFontColor() throws IOException {
    // 创建工作簿
    ExcelWriter excelWriter = EasyExcel.write("demo.xlsx").build();
    WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build();

    // 构造数据
    List data = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        DemoData demoData = new DemoData();
        demoData.setName("小明");
        demoData.setAge(20);
        demoData.setContent("这是第" + (i + 1) + "行数据");
        // 设置第2列单元格的字体颜色为绿色
        if (i == 1) {
            demoData.setContentStyle(EasyExcelUtils.createCellStyle(excelWriter, null, IndexedColors.GREEN.getIndex()));
        }
        data.add(demoData);
    }

    // 设置Excel表头
    List
   
    > head = new ArrayList<>();
    List
      head0 = new ArrayList<>();
    head0.add("姓名");
    head0.add("年龄");
    head0.add("内容");
    head.add(head0);

    // 写入Excel文件
    excelWriter.write(data, writeSheet, EasyExcelUtils.createCellStyle(excelWriter, null, IndexedColors.WHITE.getIndex()), EasyExcelUtils.createHeadStyle(excelWriter, null, IndexedColors.ORANGE.getIndex()), head);
    excelWriter.finish();
}

     
    
   
  

在上述代码中,我们在EasyExcelUtils.createCellStyle()方法中添加了fontColor表示字体颜色值,其中的IndexedColors.GREEN.getIndex()表示颜色值。

四、多种颜色组合

除了单独设置单元格背景颜色和字体颜色,我们还可以将多种颜色进行组合,实现更细致的样式设置。具体实现方式如下:

public void setCellMultipleColor() throws IOException {
     // 创建工作簿
     ExcelWriter excelWriter = EasyExcel.write("demo.xlsx").build();
     WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build();

     // 构造数据
     List data = new ArrayList<>();
     for (int i = 0; i < 10; i++) {
         DemoData demoData = new DemoData();
         demoData.setName("小明");
         demoData.setAge(20);
         demoData.setContent("这是第" + (i + 1) + "行数据");
         // 设置第2列单元格的样式,背景色为红色,字体颜色为白色
         if (i == 1) {
             demoData.setContentStyle(EasyExcelUtils.createCellStyle(excelWriter, IndexedColors.RED.getIndex(), IndexedColors.WHITE.getIndex()));
         }
         data.add(demoData);
     }

     // 设置Excel表头
     List
   
    > head = new ArrayList<>();
     List
      head0 = new ArrayList<>();
     head0.add("姓名");
     head0.add("年龄");
     head0.add("内容");
     head.add(head0);

     // 写入Excel文件
     excelWriter.write(data, writeSheet, EasyExcelUtils.createCellStyle(excelWriter, IndexedColors.WHITE.getIndex()), EasyExcelUtils.createHeadStyle(excelWriter, IndexedColors.ORANGE.getIndex()), head);
     excelWriter.finish();
 }

     
    
   
  

在上述代码中,我们在EasyExcelUtils.createCellStyle()方法中添加了两个参数:bgColor表示背景颜色值,fontColor表示字体颜色值。其中,调用EasyExcelUtils.createCellStyle()方法时,若输入的颜色值为null,则表明不设置对应的颜色。

五、颜色设置策略

在上述的代码示例中,我们为单元格设置了具体的颜色值,但是通常情况下,我们需要根据不同的条件来确定单元格的颜色。具体实现方式如下:

public void setCellDynamicColor() throws IOException {
     // 创建工作簿
     ExcelWriter excelWriter = EasyExcel.write("demo.xlsx").build();
     WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build();

     // 构造数据
     List data = new ArrayList<>();
     for (int i = 0; i < 10; i++) {
         DemoData demoData = new DemoData();
         demoData.setName("小明");
         demoData.setAge(20);
         demoData.setContent("这是第" + (i + 1) + "行数据");
         // 设置第2列单元格的颜色
         if (i % 2 == 0) {
             demoData.setContentStyle(EasyExcelUtils.createCellStyle(excelWriter, IndexedColors.BLUE.getIndex(), null));
         } else {
             demoData.setContentStyle(EasyExcelUtils.createCellStyle(excelWriter, IndexedColors.RED.getIndex(), null));
         }
         data.add(demoData);
     }

     // 设置Excel表头
     List
   
    > head = new ArrayList<>();
     List
      head0 = new ArrayList<>();
     head0.add("姓名");
     head0.add("年龄");
     head0.add("内容");
     head.add(head0);

     // 写入Excel文件
     excelWriter.write(data, writeSheet, EasyExcelUtils.createCellStyle(excelWriter, IndexedColors.WHITE.getIndex()), EasyExcelUtils.createHeadStyle(excelWriter, IndexedColors.ORANGE.getIndex()), head);
     excelWriter.finish();
 }

     
    
   
  

在上述代码中,我们通过判断数据的下标是否为偶数来确定背景颜色的值。在实际应用中,我们可以根据不同的数据类别,设置不同的颜色值来区分数据,增强Excel表格的可读性。除了单元格背景色和字体色的设置,还可以设置边框样式、对齐方式、字体样式等,以满足不同的样式需求。