You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java使用POI设置Excel允许编辑区域密码输入提示错误如何解决

你代码的核心错误是对CTProtectedRange.setPassword方法的入参逻辑理解有误:该方法要求传入的是符合Excel规范的密码哈希值字节数组,而非明文密码直接转十六进制得到的原始字节。你当前直接将明文"AB"转hex后传入,Excel在校验时会把用户输入的密码做哈希运算后再比对,二者必然不匹配,因此触发密码错误提示。

解决方案

使用POI内置的密码哈希工具类生成符合Excel要求的哈希值,替换原有的密码处理逻辑即可,修改后完整核心代码如下:

import org.apache.poi.util.CryptoFunctions;
// 保留你原有其他导入

String pwd = "AB";
// 生成Excel 16位异或哈希值,兼容所有版本Excel
byte[] passwordHash = CryptoFunctions.createXorVerifier1(pwd);

CTProtectedRange ctProtectedRange = sheet.getCTWorksheet().addNewProtectedRanges().addNewProtectedRange();
ctProtectedRange.setName("protect");
ctProtectedRange.setPassword(passwordHash);
ctProtectedRange.setSqref(List.of("A1:D1"));
sheet.protectSheet("1");

修改后重新生成Excel,输入密码"AB"即可正常编辑指定区域。


内容的提问来源于stack exchange,提问作者Hans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:45:04