25

我从 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。这是一个好的解决方案吗?有没有其他选择?

4

2 回答 2

15

对于旧的 Excel 格式文件,您有以下选择:

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

据我所知,您可以使用此代码读取 .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。

于 2014-03-04T04:05:28.160 回答