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

由于POI有更多的function,我从jxl切换到poi。 但是,我无法处理以旧格式生成的xls文件。 现在我得到这个错误:

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

现在我正在考虑使用两个JXL以及POI,这取决于xls版本,因此对于旧格式的xls文件,我将使用jxl,而对于新版本,我将使用POI。 这是一个很好的解决scheme? 有没有其他的select?

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

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

根据我的知识,你可以使用这段代码来读取.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。