hutool工具ExcelWriter设置单个单元格样式
官网自定义样式:ExcelWriter writer = ...;// 定义单元格背景色StyleSet style = writer.getStyleSet();// 第二个参数表示是否也设置头部单元格背景style.setBackgroundColor(IndexedColors.RED, false);//设置内容字体Font font = writer.createFont();font.
·
官网自定义样式:
ExcelWriter writer = ...;
// 定义单元格背景色
StyleSet style = writer.getStyleSet();
// 第二个参数表示是否也设置头部单元格背景
style.setBackgroundColor(IndexedColors.RED, false);
//设置内容字体
Font font = writer.createFont();
font.setBold(true);
font.setColor(Font.COLOR_RED);
font.setItalic(true);
//第二个参数表示是否忽略头部样式
writer.getStyleSet().setFont(font, true);
以上自定义样式是针对单元格集合的,划分为:
-
头部样式 headCellStyle
-
普通单元格样式 cellStyle
-
数字单元格样式 cellStyleForNumber
-
日期单元格样式 cellStyleForDate
但是,有时候我们只需要修改单个单元格样式,其他单元格样式采用默认样式,参考如下:
@GetMapping("downloadExampleExcel")
public Response downloadExampleExcel(HttpServletResponse response) {
logger.info("downloadExampleExcel response start。。。");
List<Title> titles = titleService.selectTitles();
ExcelWriter writer = ExcelUtil.getWriter();
for (int i = 0, j = 0; i < titles.size(); i++) {
Title title = titles.get(i);
writeCell(writer, j ++, title.getFieldDescC(), title.getRequiredFlag());
}
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + "文件名" + ".xls");
ServletOutputStream out = null;
try {
out = response.getOutputStream();
writer.flush(out, true);
} catch (Exception e) {
log.error("downloadExampleExcel response exception", e);
return ResponseHelper.buildFail(e.getMessage());
} finally {
writer.close();
if (out != null) {
IoUtil.close(out);
}
logger.info("downloadExampleExcel response end。。。");
}
return ResponseHelper.buildOk();
}
/**
* 输入标题到excel
* @param writer excel对象
* @param column 当前列位置
* @param cellValue 标题内容
* @param requiredFlag 是否标红
*/
private void writeCell(ExcelWriter writer, int column, String cellValue, String requiredFlag){
// 根据x,y轴设置单元格内容
writer.writeCellValue(column , 0, cellValue);
Font font = writer.createFont();
font.setColor(Font.COLOR_RED);
if (Constants.NUMBER_TWO.equals(requiredFlag)){
// 根据x,y轴获取当前单元格样式
CellStyle cellStyle = writer.createCellStyle(column, 0);
// 内容水平居中
cellStyle.setAlignment(HorizontalAlignment.CENTER);
// 内容垂直居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
// 设置边框
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
// 字体颜色标红
cellStyle.setFont(font);
}
}
单个单元格字体标红,效果:
更多推荐
已为社区贡献4条内容
所有评论(0)