9
只有导出的列是期间(2022-02,字符串类型)的才会失败,其他列正常锁定。
加锁相关代码如下,columnList存放的是相关的列:
<html>
<body>
<!--StartFragment-->
@Override
--
| public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) {
| cellStyle.setAlignment(HorizontalAlignment.CENTER);
| if (!CollectionUtils.isEmpty(columnList))
| {
| if (columnList.contains(cell.getColumnIndex()))
| {
| // 设置表单保护密码(随机)
| UUID uuid = UUID.randomUUID();
| writeSheetHolder.getSheet().protectSheet(uuid.toString() );
| // 设置锁定单元格
| cellStyle.setLocked(true);
| }
| else
| {
| //非锁定单元格 必须手动设置为 false
| cellStyle.setLocked(false);
| }
| }
| // 填充单元格样式
| cell.setCellStyle(cellStyle);
| }
效果如下
灰色的代表禁用成功,白色的还是可以修改
相关版本和变量 <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
@ContentStyle(dataFormat = 49) @ExcelProperty(value = "期间") private String periodName;