官网自定义样式:

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);
        }
    }

 单个单元格字体标红,效果:

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐