ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

easyExcel同一单元格部分文字颜色、样式修改

2021-10-13 15:06:45  阅读:974  来源: 互联网

标签:样式 easyExcel 单元格 public cell Override writeSheetHolder Integer final


在这里插入图片描述
在这里插入图片描述比如这种情况,有那么部分时候,客户的要求那是相当的十分刁钻,平时的导出如果是用easyExcel的话,就需要写自定义拦截器再引入poi富文本来修改了。

新建类实现CellWriteHandler接口:

public class WriteHandlerStrategy implements CellWriteHandler {

    @Override
    public void beforeCellCreate(final WriteSheetHolder writeSheetHolder, final WriteTableHolder writeTableHolder,
                                 final Row row, final Head head, final Integer columnIndex,
                                 final Integer relativeRowIndex, final Boolean isHead) {

    }

    @Override
    public void afterCellCreate(final WriteSheetHolder writeSheetHolder, final WriteTableHolder writeTableHolder,
                                final Cell cell, final Head head, final Integer relativeRowIndex, final Boolean isHead) {

    }

    @Override
    public void afterCellDataConverted(final WriteSheetHolder writeSheetHolder, final WriteTableHolder writeTableHolder,
                                       final CellData cellData, final Cell cell, final Head head,
                                       final Integer relativeRowIndex, final Boolean isHead) {

    }

    @Override
    public void afterCellDispose(final WriteSheetHolder writeSheetHolder, final WriteTableHolder writeTableHolder,
                                 final List<CellData> list, final Cell cell, final Head head, final Integer integer,
                                 final Boolean aBoolean) {

    }
}

在这里我们对afterCellDispose动点手脚,在after之后操作。

@Override
    public void afterCellDispose(final WriteSheetHolder writeSheetHolder, final WriteTableHolder writeTableHolder,
                                 final List<CellData> list, final Cell cell, final Head head, final Integer integer,
                                 final Boolean aBoolean) {
        Sheet sheet = writeSheetHolder.getSheet();
        Workbook workbook = sheet.getWorkbook();
        // xlsx格式,如果是老版本格式的话就用 HSSFRichTextString
        XSSFRichTextString richString = new XSSFRichTextString(cell.getStringCellValue());
        Font font = workbook.createFont();
        font.setColor(Font.COLOR_RED);
        // 从哪到哪,你想设置成什么样的字体都行startIndex,endIndex
        richString.applyFont(0, 2, font);
        // 再设置回每个单元格里
        cell.setCellValue(richString);
    }

配置咱们就写完了,最后最最最重要的就是,富文本得把inMemory设置为true,不然没有效果噢,俺白忙活了一天,太可恶了惹。

EasyExcel.write(response.getOutputStream(), ReportVO.class)
            .inMemory(true) // 富文本
            .registerWriteHandler(new WriteHandlerStrategy()).build();

正常调用写excel的时候增加inMemory(true)和注册拦截registerWriteHandler(new WriteHandlerStrategy()),把咱们自定义的类放进去。

白忙了一天,早知道用poi了,这个地方可是大坑inMemory(true)!!!

标签:样式,easyExcel,单元格,public,cell,Override,writeSheetHolder,Integer,final
来源: https://blog.csdn.net/weixin_43910915/article/details/120743395

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有