跳到主要内容

密码保护

本章节介绍如何读取和写入受密码保护的 Excel 文件。

概述​

Apache Fesod (Incubating) 支持 Excel 内置的密码保护功能,适用于读取和写入操作。在构建器上使用 .password("xxx") 配置密码。对于 .xlsx 输出,设置非空密码并成功完成写入后,Apache Fesod (Incubating) 使用 Apache POI 的加密实现(基于 AES),大文件加密时内存开销较高。旧版 .xls 的保护行为与 .xlsx 加密不同,不应假定其具有相同的保密性。

带密码写入​

代码示例​

@Test
public void passwordWrite() {
String fileName = "passwordWrite" + System.currentTimeMillis() + ".xlsx";

FesodSheet.write(fileName)
.password("your_password")
.head(DemoData.class)
.sheet("PasswordSheet")
.doWrite(data());
}

带密码读取​

代码示例​

@Test
public void passwordRead() {
String fileName = "path/to/encrypted.xlsx";

FesodSheet.read(fileName, DemoData.class, new DemoDataListener())
.password("your_password")
.sheet()
.doRead();
}

安全说明​

  • XLSX 密码保护适用于成功完成的输出,不代表处理期间的临时文件、缓存或 JVM 内存也已加密。
  • 保护临时目录和输出目录,禁止不可信主体访问。文件输出在处理期间可能包含明文,必须在整个写入流程成功后再交付。
  • 写入或加密失败后的结果应按未完成的敏感数据处理,不得交付。
  • 如果密码不正确,读取时会抛出 EncryptedDocumentException 异常。
  • 在生产环境中,请避免硬编码密码 — 建议使用配置文件或密钥管理服务。

请参阅安全模型,了解加密边界、临时文件保护要求,以及 Apache POI 的作用与限制。