java-POI无法打开在Excel中打开的工作簿
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-POI无法打开在Excel中打开的工作簿,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1908字,纯文字阅读大概需要3分钟。
内容图文
![java-POI无法打开在Excel中打开的工作簿](/upload/InfoBanner/zyjiaocheng/695/3e38abb70d214e7fa8e65ba82b904887.jpg)
当我尝试在POI中打开.xlsx文件时,出现异常:
java.lang.IllegalArgumentException: The supplied POIFSFileSystem does not contain a BIFF8 'Workbook' entry. Is it really an excel file?
at org.apache.poi.hssf.usermodel.HSSFWorkbook.getWorkbookDirEntryName(HSSFWorkbook.java:223)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:245)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:188)
我注意到即使名称是.xlsx,代码也将其视为.xls文件,并且我正在使用WorkbookFactory.create(fileInputStream);.打开文件.
我尝试将文件重命名为.zip并在WinZip中打开,但出现错误-无效的zip文件.
该文件确实在Excel中打开,如果我将其保存(不做任何更改),那么它也可以在POI中正确打开.
解决方法:
从您所说的内容来看,即您有一个.xlsx文件,但在HSSF中却没有工作簿条目,所以我推断出您有一个加密的.xlsx文件
基本上有4种方法来处理.xls或.xlsx文件:
>未加密的.xls文件-OLE2存储,可与HSSF一起使用
>加密的.xlsx文件-OLE2存储,某些记录已加密,如果您使用supply the password,则可与HSSF一起使用
>未加密的.xlsx文件-OOXML(xml压缩)存储,可与XSSF一起使用
>加密的.xlsx文件-存储在OLE2中,该文件包含加密的部分,该部分包装了OOXML,后者最终与XSSF配合使用(很讨厌)
因此,我认为正在发生的事情是您正在检查文件的类型,看到它是OLE2,然后将其传递给HSSF. HSSF寻找其可使用的位,看不到它们并放弃
您需要做的是follow the instructions on the POI Encrypted Documents page.基本上,您的代码必须是这样的:
EncryptionInfo info = new EncryptionInfo(filesystem);
Decryptor d = Decryptor.getInstance(info);
try {
if (!d.verifyPassword(password)) {
throw new RuntimeException("Unable to process: document is encrypted");
}
InputStream dataStream = d.getDataStream(filesystem);
XSSFWorkbook wb = new XSSFWorkbook(dataStream);
// Process XLSX file here
} catch (GeneralSecurityException ex) {
throw new RuntimeException("Unable to process encrypted document", ex);
}
如果您使用最新版本的POI,如果您将加密的.xlsx文件提供给HSSF,它现在将引发EncryptedDocumentException,因此您可以更轻松地找出出错的地方
内容总结
以上是互联网集市为您收集整理的java-POI无法打开在Excel中打开的工作簿全部内容,希望文章能够帮你解决java-POI无法打开在Excel中打开的工作簿所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。