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

时间:2013-03-11 10:37:50

标签: java excel apache-poi jxl

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

2 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:-4)

据我所知,您可以使用此代码读取.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就足够了。您需要其他罐子才能使用新版本的excel。