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

时间:2016-11-06 14:07:02

标签: java excel encryption apache-poi worksheet

我有一个用excel 95,97-2003创建的密码保护工作表

我有密码,我试图以不同的方式阅读此文件

方法1:

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

方法2:

    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加密

也会抛出相同的异常

方法3:

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

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

同样的例外。

方法4

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

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

因为无法将密码设置为工作表。

方法5

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工作簿的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

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

然而,自上次发布POI-3.15以来,对主干进行了一些增强,所以从https://builds.apache.org/view/POI/job/POI/lastSuccessfulBuild/artifact/尝试最近的每晚构建可能是值得的,看看是否能使它工作。

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