一、背景介绍
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(); // 构造数据 Listdata = 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(); // 构造数据 Listdata = 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(); // 构造数据 Listdata = 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(); // 构造数据 Listdata = 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表格的可读性。除了单元格背景色和字体色的设置,还可以设置边框样式、对齐方式、字体样式等,以满足不同的样式需求。