当前位置: 首页 > 面试题库 >

如何使用POI处理旧的excel .xls文件?

谢叶五
2023-03-14
问题内容

由于POI具有更多功能,因此我从jxl切换到poi。但是,我无法处理以旧格式生成的xls文件。现在我收到此错误:

org.apache.poi.hssf.OldExcelFormatException:提供的电子表格似乎是Excel 5.0 /
7.0(BIFF5)格式。POI仅支持BIFF8格式(从Excel版本97/2000 / XP / 2003开始)

现在,我正在考虑根据xls版本同时使用JXL和POI,因此对于旧格式的xls文件,我将使用jxl,而对于较新的版本,我将使用POI。这是一个好的解决方案吗?还有其他选择吗?


问题答案:

对于旧的Excel格式文件,您可以使用以下替代方法:

  1. HSSF,是POIExcel ‘97(-2007)文件格式的实现。
    • 如果只想提取文本内容,则可以使用OldExcelExtractor,它将仅从文件中提取文本和数字。
    • 如果需要特定单元格中的值,则需要采取类似的OldExcelExtractor方法,在记录级别处理文件,并检查OldStringRecord,NumberRecord,OldFormulaRecord和好友中的坐标。
  2. 就像您已经提到的那样,JXL也可以处理某些情况。
  3. 使用JDBC / ODBC驱动程序。它不像HSSF以前那样灵活,但是对于某些旧格式,这是提取信息的唯一方法。


 类似资料:
  • 问题内容: 我想在Docx文档中找到注释(以某种方式,通过作者或ID…),然后创建新内容。 问题答案: 正如我在您的问题中链接的答案中所说的那样,到目前为止,在创建过程中,它只会读取该程序包的一部分。没有写访问权限,也没有创建该程序包部件的可能性。在XWPFDocument.java中提到了这一点-受保护的void onDocumentRead() :代码行210:“ // TODO根据XWPFC

  • 为了熟悉stream api,我试图编写一个非常简单的模式。 问题:文本文件不包含嵌套的文本块。所有块由开始/结束模式(例如,

  • 我用Infinispan(8.2.4 Final)设置了一个集群缓存存储,使用SoftIndexFileStore进行持久化。 文档中指出,如果条目过期,压缩程序将无法清理清除的条目,磁盘使用量将随着时间的推移而增加。从用户指南: 当条目存储过期时,SIFS无法检测到其中一些条目已过期。因此,不会压缩这样的旧文件(未实现方法AdvancedStore.purgeExpired()。这可能会导致文件

  • 问题内容: 我准备使用Java创建文件浏览器。目的是尽可能地模仿默认资源管理器的行为,无论底层操作系统是什么。 我没有用Java完成GUI编程。 我查找了Swing,SWT和JFace,并从本教程开始我的项目:http : //www.ibm.com/developerworks/opensource/library/os- ecgui1/ 我想知道您对解决此问题的最佳方法的看法。如果您可以评论编

  • 问题内容: 您认为将docx文档读取为java对象哪个更好?为什么? 换一种说法。哪个库支持大多数单词标签? 问题答案: 披露:我领导docx4j项目 尽管docx4j还可以处理pptx和xlsx,但它主要用于docx操作。举例来说,在撰写本文时,docx4j论坛中有近1000个主题。pptx论坛仅占10%。 无论您想对docx文档做什么,docx4j都应该能够为您提供帮助。通用工作流只有一页概述

  • 我正在使用驱动程序。findelements(By.xpath(“//*);要检索页面上的所有元素,但是在IE9/IE10上,我得到了一个陈旧的元素异常。我如何处理它?请帮助我。 错误如下所示: