一、設置整個單元格的背景顏色
EasyExcel是一個開源的基於Java的Excel讀寫解決方案,我們可以通過它的API來設置Excel的單元格的樣式。要設置整個單元格的背景顏色,我們需要執行以下幾個步驟:
1、創建一個ExcelWriter對象
2、設置單元格背景樣式
3、寫入Excel文件
public static void main(String[] args) { //創建一個直接寫入文件的excel對象 String fileName = "D:/test.xlsx"; ExcelWriter excelWriter = EasyExcel.write(fileName).build(); //設置樣式 WriteCellStyle writeCellStyle = new WriteCellStyle(); //設置背景顏色 writeCellStyle.setFillForegroundColor(IndexedColors.RED.getIndex()); //設置填充模式 writeCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND); //寫入Sheet1 WriteSheet writeSheet = EasyExcel.writerSheet(0, "Sheet1") .head(head()) .registerWriteHandler(new CellFillStyleWriteHandler(writeCellStyle))//設置樣式 .build(); excelWriter.write(data(), writeSheet); excelWriter.finish(); } public static List<List> head() {...} public static List<List> data() {...}
二、設置單元格內文字和背景顏色
有時,我們需要對單元格內的文字進行樣式設置,比如設置文字的顏色和背景顏色。此時,我們需要給每一個單元格設置樣式,並設置文字與單元格背景之間的邊距:
1、創建一個ExcelWriter對象
2、設置單元格樣式
3、遍歷單元格,設置每個單元格的樣式
4、寫入Excel文件
public static void main(String[] args) { //創建一個直接寫入文件的excel對象 String fileName = "D:/test.xlsx"; ExcelWriter excelWriter = EasyExcel.write(fileName).build(); //設置樣式 WriteCellStyle writeCellStyle = new WriteCellStyle(); //設置背景顏色 writeCellStyle.setFillForegroundColor(IndexedColors.RED.getIndex()); //設置填充模式 writeCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND); //設置文字顏色 writeCellStyle.setWriteFontColor(IndexedColors.WHITE.getIndex()); //設置上下左右邊距 writeCellStyle.setTopBorderColor(IndexedColors.WHITE.getIndex()); writeCellStyle.setBottomBorderColor(IndexedColors.WHITE.getIndex()); writeCellStyle.setLeftBorderColor(IndexedColors.WHITE.getIndex()); writeCellStyle.setRightBorderColor(IndexedColors.WHITE.getIndex()); //寫入Sheet1 WriteSheet writeSheet = EasyExcel.writerSheet(0, "Sheet1") .head(head()) .registerWriteHandler(new CellFillStyleWriteHandler(writeCellStyle))//設置樣式 .build(); excelWriter.write(data(), writeSheet); //遍歷單元格,設置樣式 for (int i = 0; i < data().size(); i++) { excelWriter.writeRow(new WriteSheetHolder(writeSheet), new WriteTableHolder(new TableWriteHandler.ExcelWriteTableParameter(i, 1, data().size()), null, null), data().get(i)); //設置單元格樣式 excelWriter.getOrCreateCellWriteHandler(new CellFillStyleWriteHandler(writeCellStyle)).cell(i, 1); } excelWriter.finish(); } public static List<List> head() {...} public static List<List> data() {...}
三、根據條件設置單元格顏色
有時,我們需要根據條件對表格中的一些單元格進行顏色標記,比如把布爾值為true的單元格設置為紅色,false的設置為綠色。此時,我們需要先使用WriteCellValueWriteHandler繼承類來寫入Excel文件,然後再使用ConditionCellStyleStrategy類來根據條件設置單元格顏色。
1、創建一個ExcelWriter對象
2、設置單元格樣式
3、遍歷單元格,根據條件設置單元格的樣式
4、寫入Excel文件
public static void main(String[] args) { //創建一個直接寫入文件的excel對象 String fileName = "D:/test.xlsx"; ExcelWriter excelWriter = EasyExcel.write(fileName).build(); //寫入Sheet1 WriteSheet writeSheet = EasyExcel.writerSheet(0, "Sheet1") .head(head()).build(); //設置樣式 WriteCellStyle writeCellStyle = new WriteCellStyle(); //設置背景顏色 writeCellStyle.setFillForegroundColor(IndexedColors.RED.getIndex()); //設置填充模式 writeCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND); //設置文字顏色 writeCellStyle.setWriteFontColor(IndexedColors.WHITE.getIndex()); //寫入單元格 excelWriter.write(data(), writeSheet); //根據條件設置單元格顏色 ConditionCellValueStyleStrategy writeCellStyleStrategy = new ConditionCellValueStyleStrategy(); writeCellStyleStrategy.add(new WriteCellStyle(writeCellStyle), new CustomCellWriteHandler() {//如果value為true,則打上紅色標記 @Override public Boolean convert(Object value) { return (Boolean) value; } }); //是否包含表頭 boolean includeHead = true; if (includeHead) { writeSheet.setHead(writeSheet.getHead()); } excelWriter.use(new ConditionCellStyleWriteHandler(writeCellStyleStrategy)); excelWriter.finish(); } public static List<List> head() {...} public static List<List> data() {...}
四、導出不同Sheet的數據並設置顏色
在某些情況下,我們需要在一張Excel中導出多個Sheet,每個Sheet中數據的樣式和顏色可能都不盡相同。此時我們可以按照如下方式實現:
1、創建一個ExcelWriter對象
2、設置每個Sheet的樣式
3、循環寫入數據並設置樣式
4、寫入Excel文件
public static void main(String[] args) { String fileName = "D:/test.xlsx"; ExcelWriter excelWriter = EasyExcel.write(fileName).build(); //寫入Sheet1 WriteSheet writeSheet1 = EasyExcel.writerSheet(0, "Sheet1") .head(head1()) .registerWriteHandler(new CellFillStyleWriteHandler(getBgColor(IndexedColors.RED.getIndex())))//設置樣式 .build(); excelWriter.write(data1(), writeSheet1); //寫入Sheet2 WriteSheet writeSheet2 = EasyExcel.writerSheet(1, "Sheet2") .head(head2()) .registerWriteHandler(new CellFillStyleWriteHandler(getBgColor(IndexedColors.GREEN.getIndex())))//設置樣式 .build(); excelWriter.write(data2(), writeSheet2); excelWriter.finish(); } public static List<List> data1() {...} public static List<List> data2() {...} public static List<List> head1() {...} public static List<List> head2() {...} /** * 設置單元格背景顏色 */ private static WriteCellStyle getBgColor(short color) { WriteCellStyle writeCellStyle = new WriteCellStyle(); writeCellStyle.setFillForegroundColor(color); writeCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND); return writeCellStyle; }
原創文章,作者:JHOCK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/372219.html