首页 > 其他分享 >EasyExcel导入对失败数据进行标红导出

EasyExcel导入对失败数据进行标红导出

时间:2023-05-26 10:33:59浏览次数:42  
标签:failRowIndex EasyExcel 导入 标红 context excelWriter public 模板

模板渲染工具类

public class ExcelUtils {

    /**
     * 模板表头样式
     * @param templateName "classpath:template/" 模板文件名称
     * @param data 数据
     * @param writeHandler 自定额填充策略
     */
    public static String commonImport(String templateName, Object data, WriteHandler writeHandler) throws IOException {
        Resource resource = new DefaultResourceLoader().getResource("classpath:template/" + templateName);
        //输出文件
        String fileName = System.getProperty("java.io.tmpdir")+ File.separator+"temp_"+System.currentTimeMillis() + ".xlsx";
        try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(resource.getInputStream()).registerWriteHandler(writeHandler).build()) {
            WriteSheet writeSheet = EasyExcel.writerSheet().build();
            //开启excel 函数公式
            Workbook workbook = excelWriter.writeContext().writeWorkbookHolder().getWorkbook();
            workbook.setForceFormulaRecalculation(true);
            FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
            excelWriter.fill(data, fillConfig, writeSheet);
            excelWriter.finish();
        }
        return fileName;
    }
}

失败行标红工具类

/**
 * 单元格标红处理器
 */
@Slf4j
public class CustomerCellHandler implements CellWriteHandler {

    public CustomerCellHandler(List<Integer> failRowIndex) {
        this.failRowIndex = failRowIndex;
    }

    /**
     * 失败行下标数组
     */
    private final List<Integer> failRowIndex;

    @Override
    public void afterCellDispose(CellWriteHandlerContext context) {
        // 当前事件会在 数据设置到poi的cell里面才会回调
        // 判断不是头的情况 如果是fill 的情况 这里会==null 所以用not true
        if (!context.getHead()) {
            // 第一个单元格
            // 只要不是头 一定会有数据 当然fill的情况 可能要context.getCellDataList() ,这个需要看模板,因为一个单元格会有多个 WriteCellData
            WriteCellData<?> cellData = context.getFirstCellData();
            Integer rowNum = context.getRow().getRowNum();
            if (failRowIndex.contains(rowNum)) {
                WriteCellStyle writeCellStyle = cellData.getOrCreateStyle();
                WriteFont writerFont = new WriteFont();
                writerFont.setColor(IndexedColors.RED.getIndex());
                writeCellStyle.setWriteFont(writerFont);
            }
        }
    }

}

 

标签:failRowIndex,EasyExcel,导入,标红,context,excelWriter,public,模板
From: https://www.cnblogs.com/cxyfyf/p/17434029.html

相关文章

  • expdp同一个用户下的多表导出导入
    expdpexpuser/oracleparfile=exptable.parcontent=metadata_onlycluster=n编辑exptable.par文件moreexptable.pardumpfile=mdm.dmplogfile=mdm.logschemas=mdmdirectory=expdp_dmpexclude=statisticsflashback_scn=3523577018PARALLEL=4COMPRESSION=allinclude=TA......
  • SpringBoot结合easyexcel处理Excel文件
    文/朱季谦假如有这样一个需求,每天需要读取以下表头的Excel文件,统计文件里击中黑名单的比例,该文件is_blacklist列的1表示击中了黑名单,0表示未击中黑名单。基于该需求,可以在定时任务通过easyexcel工具进行处理。一、首先需要在SpringBoot引入easyexcel的maven依赖<dependency>......
  • obloader 基于典型场景数据导入
    作者:刘书盛热衷技术分享、编写技术文档原创作品oceanbase数据库原创内容未经授权不得随意使用,转载请联系小编并注明来源,谢谢!预处理函数:函数签名返回类型描述LOWER(char)String对参数值中的字母转换为小写。参数值可以是列名、常量或者嵌套表达式。当参数值是常量......
  • vue自动导入组件和自动导入类库 api
    vue3项目中,使用vue常用的api比如vuex的api或者ref,reactive等,以及导入多个自定义组件、UI组件库的组件,都需要反复的手动导入,注册,很是影响开发体验,这里推荐antfu开源的两个插件,上链接:自动导入组件https://github.com/antfu/unplugin-vue-components自动导入类库a......
  • BootStrap导入excel
    BootStrap_实现导入Excel(BootStrap-InputFile)【实例】weixin_40877388于2020-03-3114:52:47发布5505收藏19分类专栏:BootStrap版权BootStrap专栏收录该内容2篇文章0订阅订阅专栏一、前言在批量加入学生信息的时候,我们通常采用Excel导入的方式,方便,快......
  • js导入excel&导出excel
    js导入excel&导出excel Excel导入html代码<buttonstyle={{color:'#1890ff',fontSize:'14px',cursor:'pointer'}}onClick={()=>{upFile();}}>导入</button><inputid="upFile"type="fil......
  • 导入文件的目录路径
    earth-forecasting-transformer/src/earthformer/config.pyscripts/cuboid_transformer/enso/train_cuboid_enso.py在这种情况下,你可以使用以下代码在"train_cuboid_enso.py"中导入"cfg":from.......
  • MongoDB-怎么将csv数据导入mongodb数据库的某张表中
    背景介绍背景就是开发突然问我能不能往数据库导数据,然后只需要某几列的数据。我的第一想法是:用python脚本读取csv文件,将内容拼接成json格式的文本,然后用脚本的方式导入。后来发现我用的GUI工具就可以直接导入数据到数据库中。实现过程既然有工具能够直接导入,那肯定就用现成的工具导......
  • []复习]cityengine2019/2022导入shp数据生成福田区建筑群
    时间是一把杀猪刀和人工智能比起来我太弱了.很无助.无法给自己升级系统.cityengine2019目前载入那种地区线上数据是行不通了,2022可以整一个邮箱试用一个月.https://www.esri.com/zh-cn/arcgis/products/arcgis-cityengine/trial/professionals我整了一个万能无线邮箱,无法注册,......
  • Android原生工程配置导入uni-app项目-混合开发
    Android原生工程配置官网配网地址:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/androidApp离线SDK下载我这边给大家放在资料里面了新建Android项目Hello-H5注意:Android项目目录不要有中文拷贝[email protected]、lib.5plus.base-release.aar、mi......