easyexcel导出设置颜色
时间: 2023-09-28 17:11:32 浏览: 260
要在 EasyExcel 中导出时设置单元格的背景颜色,可以使用 `Fill` 对象来实现。下面是一个示例代码,演示如何设置单元格的背景色。
```java
// 导入需要的类
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.afterturn.easypoi.excel.export.styler.ExcelExportStylerColorImpl;
import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.PatternFormatting;
import org.apache.poi.ss.usermodel.PatternType;
import org.apache.poi.ss.usermodel.Workbook;
// 创建自定义样式类
public class CustomExcelExportStylerColorImpl extends ExcelExportStylerColorImpl implements IExcelExportStyler {
public CustomExcelExportStylerColorImpl(Workbook workbook) {
super(workbook);
}
@Override
public short getBorderBackgroundColor(short border) {
return IndexedColors.WHITE.getIndex(); // 设置背景颜色为白色
}
@Override
public short getBorderColor(short border) {
return IndexedColors.BLACK.getIndex(); // 设置边框颜色为黑色
}
@Override
public short getBorderStyle(short border) {
return org.apache.poi.ss.usermodel.BorderStyle.THIN.getCode(); // 设置边框样式为细线
}
@Override
public short getFontColor(short font) {
return IndexedColors.BLACK.getIndex(); // 设置字体颜色为黑色
}
@Override
public boolean wrapText() {
return true; // 设置文本自动换行
}
@Override
public short getDataFormat(String format) {
return 0; // 设置数据格式,这里可以根据需要自定义
}
@Override
public void setColor(short color) {
// 设置单元格背景颜色
PatternFormatting patternFormatting = (PatternFormatting) getSheet().getSheetConditionalFormatting().createConditionalFormattingRule(
ComparisonOperator.EQUAL, "1"
).createPatternFormatting();
patternFormatting.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
patternFormatting.setFillForegroundColor(color);
}
}
```
然后在导出 Excel 的代码中使用自定义样式类来设置颜色。例如:
```java
// 创建导出实体
List<ExcelExportEntity> entityList = new ArrayList<>();
entityList.add(new ExcelExportEntity("姓名", "name"));
entityList.add(new ExcelExportEntity("年龄", "age"));
// 创建数据集合
List<Map<String, Object>> dataList = new ArrayList<>();
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("name", "张三");
dataMap.put("age", 20);
dataList.add(dataMap);
// 导出 Excel
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(null, "Sheet1"), entityList, dataList);
// 设置单元格样式
IExcelExportStyler styler = new CustomExcelExportStylerColorImpl(workbook);
// 获取 Sheet 对象并设置样式
Sheet sheet = workbook.getSheetAt(0);
for (int rowNum = 1; rowNum <= dataList.size(); rowNum++) {
Row row = sheet.getRow(rowNum);
for (int cellNum = 0; cellNum < entityList.size(); cellNum++) {
Cell cell = row.getCell(cellNum);
CellStyle style = cell.getCellStyle();
style.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); // 设置单元格背景颜色为黄色
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell.setCellStyle(style);
}
}
// 将 Excel 写入文件或输出流中
FileOutputStream fos = new FileOutputStream("output.xlsx");
workbook.write(fos);
fos.close();
```
这样就可以使用 EasyExcel 导出时设置单元格的背景颜色了。在示例代码中,我们创建了一个自定义的样式类 `CustomExcelExportStylerColorImpl`,继承了 EasyExcel 提供的 `ExcelExportStylerColorImpl` 类,并重写了其中的方法来设置样式。然后在导出 Excel 的代码中,创建了自定义样式类的实例,并通过循环设置每个单元格的背景颜色。最后将 Excel 写入文件或输出流中即可。
阅读全文