使用Apache POI密码保护.XLS Excel文件

时间:2015-01-30 20:34:51

标签: java excel 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相关的所有其他内容。

1 个答案:

答案 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>