如何使用Java库创建xls格式Excel文件时锁定单元格禁止选中复制
Java通过Apache POI生成xls格式文件实现禁止单元格选中/复制的方案
xls格式对应的Apache POI HSSF模块已原生支持该能力,实现逻辑和XSSF基本一致,具体操作步骤如下:
- 初始化工作簿、工作表对象,创建锁定状态的单元格样式
import org.apache.poi.hssf.usermodel.*; // 初始化xls格式工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("测试Sheet"); // 创建锁定样式,HSSFCell默认locked属性为true,此处显式声明避免场景异常 HSSFCellStyle lockedCellStyle = workbook.createCellStyle(); lockedCellStyle.setLocked(true);
- 所有写入表格的单元格统一应用上述
lockedCellStyle样式,确保所有单元格处于锁定状态 - 开启工作表保护,同时禁用单元格选中权限
// 启用工作表保护,可自定义保护密码,传空字符串则为无密码仅启用保护规则 sheet.protectSheet("自定义保护密码"); // 禁止选中已锁定的单元格 sheet.lockSelectLockedCells(true); // 可选配置:同时禁止选中未锁定的单元格,彻底关闭全表选中能力 sheet.lockSelectUnlockedCells(true);
注意:
HSSFSheet.lockSelectLockedCells方法最低支持Apache POI 3.16版本,如使用的POI版本低于该要求,升级依赖版本后即可正常调用。
完成上述配置后输出的xls文件,打开后用户无法选中任何单元格,自然无法复制文件内的任意数据,效果和XSSF实现的完全一致。
内容的提问来源于stack exchange,提问作者Ahmad Nadeem
相关产品推荐
相关产品推荐

