[alibaba/easyexcel]如何锁表头,让表头不允许修改

2023-03-16 510 views
3

现在公司有一个需求,导出excel模板,但是表头不允许修改,在easyExcel文档中也没有找到相关内容

回答

8

你好,很感谢,我打开演示项目并运行了,发现是全表锁, 我只想锁第一行(表头那一行)的数据,其他行都可以编辑, 在网上我也尝试找过,没有找到解决方案,请问这种怎么实现呢

2

想锁什么单元格,你就在什么单元格设置啊

7

new CellWriteHandler() {
                @Override
                public void afterCellDispose(CellWriteHandlerContext context) {
                    if (BooleanUtils.isTrue(context.getHead())) {
                      context.getCell().getCellStyle().setLocked(true);
                    }
                }
            }

给demo项目点个星呀

8

解决了么

7

不行呀,还是全表锁了55555

7

你怎么写的代码 贴出来

4
public static void main(String[] args) {
    String fileName = "export.xlsx";
    EasyExcel.write(fileName).sheet("模板").registerWriteHandler(new SheetWriteHandler() {
        @Override
        public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
            writeSheetHolder.getSheet().protectSheet("password");
        }
    }).registerWriteHandler(new CellWriteHandler() {
        @Override
        public void afterCellDispose(CellWriteHandlerContext context) {
            if (BooleanUtils.isTrue(context.getHead())) {
                context.getCell().getCellStyle().setLocked(true);
            }
        }
    }).doWrite(data());
}

private static List<DemoData> data() {
    List<DemoData> list = ListUtils.newArrayList();
    for (int i = 0; i < 10; i++) {
        DemoData data = new DemoData();
        data.setString("字符串" + i);
        data.setDate(new Date());
        data.setDoubleData(0.56);
        list.add(data);
    }
    return list;
}
7

第一,你需要指定导出的实体类Class,否则默认没有表头

image

第二 加一句 让非表头的样式不被覆盖

image
8

感谢大佬耐心回答,还有最后一个小问题 因为导出的是一个模板,然后根据模板添加数据 但是这个空白部分的单元格也被锁了,那操作人就没办法添加新数据了,只能修改 我希望既能修改,也能添加数据。

4

感谢大佬耐心回答,还有最后一个小问题 因为导出的是一个模板,然后根据模板添加数据 但是这个空白部分的单元格也被锁了,那操作人就没办法添加新数据了,只能修改 我希望既能修改,也能添加数据。

这个似乎满足不了

6

好哦