I switched from jxl to poi since POI has more features. However, I wasn't able to process the xls files that were generated in the old format. Now I am getting this error:
org.apache.poi.hssf.OldExcelFormatException: The supplied spreadsheet seems to be Excel 5.0/7.0 (BIFF5) format. POI only supports BIFF8 format (from Excel versions 97/2000/XP/2003)
Now I am thinking to use both JXL as wells as POI depending on the xls version so for old format xls files I will use jxl while for newer versions I will use POI. Is this a good solution? Are there any alternatives?
For old Excel format files, you have the following alternatives:
- HSSF, the
POI
implementation of the Excel '97(-2007) file format.- If you just want to extract the textual content, then you can use OldExcelExtractor which will pull only the text and numbers from the file.
- If you need the values from a specific cells, then you'll need to take an
approach a bit like
OldExcelExtractor
, process the file at the record level, and check for the co-ordinates on OldStringRecord, NumberRecord, OldFormulaRecord and friends.
- Like you already mentioned, JXL can handle some cases too.
- Use a JDBC/ODBC driver. It is not as flexible as
HSSF
but for some old formats it is the only way to extract the information.
as per my knowledge you can use this code to read excel files of the .xls format
FileInputStream in=new FileInputStream(new File("filename.xls"));
Wookbook wb=new HSSFWorkbook(in);
to read the new excel versions(2007 and up):
FileInputStream in=new FileInputStream(new File("filename.xls"));
Wookbook wb=new XSSFWorkbook(in);
external jar files that you will need:
1. poi-3.9
2. dom4j-1.6.1
3. XMLbeams-2.5.0
if you're work only requires you to work with .xls then only poi-3.0 will suffice. You need the other jars to work witht the new versions of excel.
来源:https://stackoverflow.com/questions/15336457/how-to-process-old-excel-xls-files-using-poi