现在公司有一个需求,导出excel模板,但是表头不允许修改,在easyExcel文档中也没有找到相关内容
Q
[alibaba/easyexcel]如何锁表头,让表头不允许修改
6
A
回答
9
在CellWriteHandler中 拿到表头Cell 设置lock 然后在SheetWriteHandler中把workBook设置成保护模式即可 demo 可以参考 https://github.com/gongxuanzhang/support-demo/tree/lock_cell (注意分支 别切错了) 解决了帮我点个星谢谢
9
你好,很感谢,我打开演示项目并运行了,发现是全表锁, 我只想锁第一行(表头那一行)的数据,其他行都可以编辑, 在网上我也尝试找过,没有找到解决方案,请问这种怎么实现呢
8
想锁什么单元格,你就在什么单元格设置啊
3
new CellWriteHandler() {
@Override
public void afterCellDispose(CellWriteHandlerContext context) {
if (BooleanUtils.isTrue(context.getHead())) {
context.getCell().getCellStyle().setLocked(true);
}
}
}
给demo项目点个星呀
0
解决了么
9
不行呀,还是全表锁了55555
4
你怎么写的代码 贴出来
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;
}
8
第一,你需要指定导出的实体类Class,否则默认没有表头
第二 加一句 让非表头的样式不被覆盖
6
感谢大佬耐心回答,还有最后一个小问题 因为导出的是一个模板,然后根据模板添加数据 但是这个空白部分的单元格也被锁了,那操作人就没办法添加新数据了,只能修改 我希望既能修改,也能添加数据。
4
感谢大佬耐心回答,还有最后一个小问题 因为导出的是一个模板,然后根据模板添加数据 但是这个空白部分的单元格也被锁了,那操作人就没办法添加新数据了,只能修改 我希望既能修改,也能添加数据。
这个似乎满足不了
2
好哦