我正在使用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相关的所有其他内容。
答案 0 :(得分:1)
根据Apache POI Encryption Supported Features Matrix,HSSF仅支持解密受已知密码保护的.xls
个文件。它不支持加密它们。 (XSSF可以同时加密和解密.xlsx
个文件)
因此,如果您确实希望支持使用Apache POI的HSSF加密.xls
文件,则需要get involved with the project然后使用submitting a patch处理此缺失的功能!< / p>