使用 包 

cn.afterturn.easypoi

List<ExcelExportEntity> entitys = new ArrayList<>();
添加标题 多个列需要添加多个new ExcelExportEntity()
如:
entitys.add(new ExcelExportEntity("姓名", "name"))
姓名:excel 导出中的列标题。
name: 是数据对应的key
ExportParams exportParams = new ExportParams(1, 2);
1:excel 中的标题
2:sheet 的名字
数据格式是 list<map<key,value>>
workbook = ExcelExportUtil.exportExcel(exportParams, entitys, list);

添加公式:
1获取对应的单元格 row 和 rang 都是从0开始的
Cell formulaCell = sheet.getRow(row).getCell(rang);
2设置公式
formulaCell.setCellFormula("SUM(F2:F4)");

设置蓝色背景
// 背景色
style.setFillForegroundColor((short)44);
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);


DownloadVO vo = DownloadVO.builder().build();

try {
@Cleanup Workbook workbook = new HSSFWorkbook();
if (entitys.size() > 0) {
workbook = ExcelExportUtil.exportExcel(exportParams, entitys, list);
final Sheet sheet = workbook.getSheetAt(0);
sheet.createFreezePane(0,2);
}
String fileName = configValueUtil.getTemporaryFilePath() + name;
@Cleanup FileOutputStream output = new FileOutputStream(XSSEscape.escapePath(fileName));
workbook.write(output);
//上传文件
UploadUtil.uploadFile(configValueUtil.getFileType(), fileName, FileTypeEnum.TEMPORARY, name);

vo.setName(name);
vo.setUrl(UploaderUtil.uploaderFile("1111" + "#" + name + "#" + "Temporary"));

修改样式

背景:Excel自定义背景颜色,自定义表头背景颜色

注意点:单元格设置背景颜色失效原因/不生效的原因,通常是因为只设置了setFillForegroundColor 参数,这样肯定是不行的,还需要再设置一下 setFillPattern,在setFillPattern中添加FillPatternType.SOLID_FOREGROUND即可

cellStyle.setFillForegroundColor(****)

cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

方法1 - 使用默认的自定义颜色:

cellStyle.setFillForegroundColor(IndexedColors.LIGHT_TURQUOISE.getIndex());

cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

通过获取IndexedColors的不同值来更改颜色(默认颜色对照表在文章底部)

方法2 - 使用rgb方法自定义 :

/**

  • 标题背景色 */ private static final String DEFAULT_BACKGROUND_COLOR = "#9BC2E6"; // 自定义背景色 int r = Integer.parseInt((DEFAULT_BACKGROUND_COLOR.substring(1,3)),16); int g = Integer.parseInt((DEFAULT_BACKGROUND_COLOR.substring(3,5)),16); int b = Integer.parseInt((DEFAULT_BACKGROUND_COLOR.substring(5,7)),16);

HSSFWorkbook wb = new HSSFWorkbook(); HSSFPalette palette = wb.getCustomPalette(); HSSFColor hssfColor = palette.findSimilarColor(r, g, b);

// 背景色与填充 cellStyle.setFillForegroundColor(hssfColor.getIndex()); cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); 默认颜色对照表(根据第1列下标对照颜色):

以上则是IndexedColors所支持的所有默认颜色,如果默认颜色没有你想要的,或者产品指定颜色了,那你需要使用第二种rgb的方式去自定义颜色。

扩展:第二种rgb的方式自定义颜色使用的是HSSFColor,HSSFColor跟IndexedColors一样都是本身支持的一些默认颜色,代码过程就是使用16进制根据下标切割 #9BC2E6 ,再进行转换添加到HSSFColor默认颜色中

———————————————— 版权声明:本文为CSDN博主「代码搬运工小付」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:​​​​https://blog.csdn.net/fuxingsheng1/article/details/126290333​