尝试打开xlsx限制文件时出现问题:org.apache.poi.openxml4j.exceptions.Invali



我在使用Java工具时遇到了一个大问题。每次我尝试上传一个被标记为";"受保护限制";,我得到了相同的异常

**org.apache.poi.openxml4j.exceptions.InvalidOperationException: Can't open the 
specified file: 'C:/bea/test.xslx'**
**at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:106)**
**at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:221)**

**Caused by: java.util.zip.ZipException: error in opening zip file**
**at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(Unknown Source)
at java.util.zip.ZipFile.<init>(Unknown Source)
at java.util.zip.ZipFile.<init>(Unknown Source)
at org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipFile(ZipHelper.java:174)
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:104)
... 6 more**

excel文件上没有密码,它只是MS office的升级,对从互联网下载的每个文件都应用了这种限制。如果我把它改成";无限制访问";一切都很好。

java工具首先创建一个excel文件的副本,我试图上传到一个临时路径中。文件被正确创建(作为原始文件(到excelPath中。在这条线上捕捉到异常

opcPkg = OPCPackage.open(excelPath, PackageAccess.READ); 

我试图将PackageAccess更改为READ_WRITE,但没有任何更改。我使用的工具是基于Java 8的,它是用Ant构建的,运行在Jboss EAP 7.2上。

--编辑--多亏了@Markus和@Gagravarr,我发现该文件有一种加密方式,只允许选定的人打开文档(即,试图在我的个人笔记本电脑中打开它,我被要求插入电子邮件和密码来打开它(
要重复异常,只需打开一个xlsx,然后转到"文件"->信息->保护工作簿-->限制访问并更改为";"受限访问";如下所示

限制

有人熟悉这类问题吗?有可能绕过这种限制,用java打开文档吗?任何提示都将不胜感激!提前非常感谢。

ZipFileZipInputStream实现之间存在差异。请尝试:

File file = new File(excelPath);
FileInputStream input = new FileInputStream(file);
opcPkg = OPCPackage.open(input);

更新:

受IRM限制的文档/AD RMS当然不能由Apache POI打开。这是microsoft特定的功能,需要访问授权服务器/Active Directory。我从来没有听说过任何在linux上集成此功能的实现。

相关内容

最新更新