一、設置整個單元格的背景顏色
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-hant/n/372219.html
微信掃一掃
支付寶掃一掃