如何使用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:
- HSSF ,Excel '97(-2007)文件格式的
POI
实现。- 如果您只是想提取文本内容,那么您可以使用OldExcelExtractor ,它将只从文件中提取文本和数字。
- 如果您需要特定单元格的值,那么您需要像
OldExcelExtractor
一样采取一种方法,在logging级别处理该文件,然后检查OldStringRecord , NumberRecord , OldFormulaRecord和friends上的坐标。
- 就像你已经提到的那样, JXL也可以处理一些情况。
- 使用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。