判斷檔案是2003前的版本還是2007的版本,然後對應調用HSSF或XSSF來讀取。
這是初步的想法,但這種做法比較麻煩,看了下API,發現XSSF和HSSF雖然在不同的包裡,但卻引用了同一接口Workbook,于是想到了這樣的讀取方法:
Workbook book = null;
try {
book = new XSSFWorkbook(excelFile);
} catch (Exception ex) {
book = new HSSFWorkbook(new FileInputStream(excelFile));
}
在各版本的Excel中測試,沒有發生異常,問題解決。