阅读受密码保护的工作表(版本 - excel 95,97-2003)Java

Reading password protected worksheet (version - excel 95,97-2003) Java

我有一个受密码保护的作品sheet 创建于 excel 95,97-2003

我有密码,我正在尝试以不同的方式读取此文件

方法一:

WorkbookFactory.create(inputStream, "password");
throws:  org.apache.poi.EncryptedDocumentException: HSSF does not currently support CryptoAPI encryption

方法二:

    protected InputStream WorkbookProtectionUnlocker(NPOIFSFileSystem fs, String password) throws AAAAException {

    EncryptionInfo info;
    try {
        info = new EncryptionInfo(fs.getRoot());
    } catch (IOException e) {
        throw new AAAException(e.getCause());
    }

    Decryptor d = Decryptor.getInstance(info);

org.apache.poi.EncryptedDocumentException: HSSF 目前不支持 CryptoAPI 加密

也抛出同样的异常

方法三:

org.apache.poi.hssf.record.crypto.Biff8EncryptionKey.setCurrentUserPassword("password");

Workbook wb = new HSSFWorkbook(new FileInputStream(file);

同样的例外。

方法四:

了解 jxl.Workbook.getWorkbook 但在此对象中,只允许将密码设置为 sheet 而不是整个作品 sheet .

抛出此错误:jxl.read.biff.PasswordException

因为无法为作品设置密码sheet。

方法五

org.apache.poi.hssf.record.crypto.Biff8EncryptionKey.setCurrentUserPassword(fileInfo.getFileOptions().xlsWorkbookPasswordExpression);
                            WorkbookFactory.create(new FileInputStream(fileInfo.getInputFile()));

同样的异常:

    org.apache.poi.EncryptedDocumentException: HSSF does not currently support CryptoAPI encryption

打开受密码保护的 HSSF 工作簿的正确方法是什么?

A​​pache POI 尚未完全支持 Office 文件格式的所有不同加密功能,请参阅 http://poi.apache.org/encryption.html 了解当前支持的内容。

然而,自上次发布 POI-3.15 以来,trunk 上进行了一些增强,因此可能值得尝试 https://builds.apache.org/view/POI/job/POI/lastSuccessfulBuild/artifact/ 最近的夜间构建,看看它是否有效。

否则,您需要在 https://bz.apache.org/bugzilla/ 报告错误,并提供可用于重现和验证的示例文件。