赞
踩
使用版本3.0.5的easyexcel的handler接口,如下代码,锁定第一列,余下列都不锁定。
但是死活不成功,只要一锁就是全表。
气死本宝宝了。
- public class CellHandler implements CellWriteHandler {
-
- private CellStyle cellStyle;
-
- @Override
- public int order() {
- return Integer.MAX_VALUE;
- }
-
- @Override
- public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) {
- cellStyle = writeSheetHolder.getSheet().getWorkbook().createCellStyle();
- writeSheetHolder.getSheet().protectSheet("1");
- }
-
-
- @Override
- public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
-
- }
-
-
- @Override
- public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, WriteCellData<?> cellData, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
-
- }
-
-
- @Override
- public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<WriteCellData<?>> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
- if(cell.getColumnIndex()==0){
- cellStyle.setLocked(true);
- }else{
- cellStyle.setLocked(false);
- }
- cell.setCellStyle(cellStyle);
- }
- }
到处找文档,都没找到为什么。
在github上的issue里看到说只要设定了protectSheet就是锁全表。
writeSheetHolder.getSheet().protectSheet("1");
我就尝试着把这句去掉。
结果,放他妈的狗屁。
去掉就全锁不上。
再后来,我在想,这个handler是通过 .registerWriteHandler(new CellHandler()) 注册进去的。
- EasyExcel.write(fileName, DemoData.class)
- .registerWriteHandler(new WriteHandler() {
- @Override
- public int order() {
- return 0;
- }
- })
- .sheet("模板")
- .registerWriteHandler(new CellHandler())
- .doWrite(DemoData::data);
于是想到,会不会是链表调用顺序的问题?我设定格子锁定其实是写进去了的,但是又被后来的格式给覆盖了。
于是聪明的我,就跑去找。
找来找去,都没找到定义链表执行顺序的地方。
在handler接口一按alt+o
看到了一个order字段
于是火速实现。
- @Override
- public int order() {
- return Integer.MAX_VALUE;
- }
这样子,我的格式定制器,肯定是最后被调用的了吧。
结果:只有第一列被锁住了,其它列都能进行编辑,成功!
真是气死我了,调了我一天。最后发现是这个原因……
真的觉得alibaba这个easyExcel格式冲突处理真的是做得很不好,做个用户指定优先不行吗?
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。