一、背景介紹
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<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<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<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<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表格的可讀性。除了單元格背景色和字體色的設置,還可以設置邊框樣式、對齊方式、字體樣式等,以滿足不同的樣式需求。
原創文章,作者:BUXYH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/334115.html