如何用POI来处理旧的Excel .xls文件?(How to process old excel

2019-08-17 11:28发布

我从锦绣丽切换到POI兴趣点,因为具有更多的功能。 不过,我是不是能够处理旧格式中生成的XLS文件。 现在,我得到这个错误:

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

现在,我想同时使用JXL作为取决于XLS版本井作为POI所以对于旧格式的XLS文件,我将使用JXL而对于新版本,我将使用POI。 这是一个很好的解决方案? 是否有其它方法吗?

Answer 1:

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

  1. HSSF的POI实现了Excel '97(-2007)文件格式。
    • 如果你只是想提取文本内容,那么你可以使用OldExcelExtractor这将拉动只能从文件中的文本和数字。
    • 如果你需要从特定细胞中的值,那么你就需要采取的做法有点像OldExcelExtractor ,处理在记录级的文件,并检查在坐标OldStringRecord , NumberRecord , OldFormulaRecord和朋友。
  2. 就像你已经提到, JXL可以处理一些情况下过多。
  3. 使用JDBC / ODBC驱动程序。 这是不够灵活HSSF但对于一些老的格式,它是提取信息的唯一途径。


Answer 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就足够了。 你需要其他的罐子witht Excel中的新版本的工作。



文章来源: How to process old excel .xls files using POI?