EasyExcel文档看的我一把血泪。。。
我需要在easyExcel写入中对多个指定单元格的样式进行修改,整个过程都是不建bean的生成,于是在继承AbstractCellWriteHandler后对指定样式进行重写,但出现了始终没效果,或者效果偏差,在此对遇到的问题进行记录。
一,不要使用getStyle()获取样式。
cell.getCellStyle()和sheet.getColumnStyle()有些时候会生效有些时候不会,但多个单元格有时会使用同一个样式对象,后续的更改有时会覆盖掉前边的样式,使用workbook.createCellStyle();则不回有这些问题。可以创建新对象后使yo用xssfCellStyle.cloneStyleFrom()复制样式。
二,写入器排序问题
这是显而易见但卡了我很久的问题,AbstractCellWriteHandler使用的默认序号是0,
EasyExcel自己的样式填充器FillStyleCellWriteHandler使用序号是50000(可在OrderConstant
类中查到),也就是说我们在这个类中重写样式时又被easyexcel重写回去了。
解决方法是重写order方法使其大于50000 即可。
@Override public int order() { return 1000000; }