我有一个用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工作簿的正确方法是什么?
答案 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/报告错误,并提供可用于重现和验证此错误的示例文件。