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

2022-09-01 19:30:50

我从jxl切换到poi,因为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。这是一个好的解决方案吗?有没有其他选择?


答案 1

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

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

答案 2

据我所知,您可以使用此代码读取.xls格式的excel文件

FileInputStream in=new FileInputStream(new File("filename.xls"));
Wookbook wb=new HSSFWorkbook(in);

阅读新的 Excel 版本(2007 年及更高版本):

 FileInputStream in=new FileInputStream(new File("filename.xls"));
    Wookbook wb=new XSSFWorkbook(in);

您需要的外部 jar 文件:

 1. poi-3.9 
 2. dom4j-1.6.1
 3. XMLbeams-2.5.0

如果你的工作只需要你使用.xls那么只有poi-3.0就足够了。您需要其他 jar 才能使用新版本的 excel。


推荐