使用 Apache POI 密码保护 .XLS Excel 文件
Password-Protect .XLS Excel files using Apache POI
我正在使用 Apache POI 3.11,它应该支持密码保护 Excel 文件(XLS 和 XLSX 类型)。我可以很容易地使用 POI 对 XLSX 类型进行加密以正常工作,但我无法使用旧的 XLS 类型进行加密。我已尝试使用以下代码执行此操作,但它所做的只是创建文件的副本而未在其上设置密码。据我从示例和 API 中可以看出,这是应该如何完成的,但我无法让它工作。
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(sourcePath));
Biff8EncryptionKey.setCurrentUserPassword("potato");
OutputStream os = new FileOutputStream(destinationPath);
wb.write(os);
os.flush();
os.close();
如有任何建议,我们将不胜感激。作为最后的手段,我也许可以使用不同的库,但我更愿意使用 POI,因为这是我们用于所有其他与 Excel 相关的内容。
根据 Apache POI Encryption Supported Features Matrix,HSSF 仅支持解密 .xls
受已知密码保护的文件。它不支持加密它们。 (XSSF 可以加密和解密 .xlsx
个文件)
因此,如果您确实希望支持使用 Apache POI 的 HSSF 加密 .xls
文件,您将需要 get involved with the project and then work on submitting a patch 来实现这一缺失的功能!
我正在使用 Apache POI 3.11,它应该支持密码保护 Excel 文件(XLS 和 XLSX 类型)。我可以很容易地使用 POI 对 XLSX 类型进行加密以正常工作,但我无法使用旧的 XLS 类型进行加密。我已尝试使用以下代码执行此操作,但它所做的只是创建文件的副本而未在其上设置密码。据我从示例和 API 中可以看出,这是应该如何完成的,但我无法让它工作。
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(sourcePath));
Biff8EncryptionKey.setCurrentUserPassword("potato");
OutputStream os = new FileOutputStream(destinationPath);
wb.write(os);
os.flush();
os.close();
如有任何建议,我们将不胜感激。作为最后的手段,我也许可以使用不同的库,但我更愿意使用 POI,因为这是我们用于所有其他与 Excel 相关的内容。
根据 Apache POI Encryption Supported Features Matrix,HSSF 仅支持解密 .xls
受已知密码保护的文件。它不支持加密它们。 (XSSF 可以加密和解密 .xlsx
个文件)
因此,如果您确实希望支持使用 Apache POI 的 HSSF 加密 .xls
文件,您将需要 get involved with the project and then work on submitting a patch 来实现这一缺失的功能!