HSSFWorkbook
專用于處理Excel 97-2003(.xls)格式的二進制文件。基于純Java實現,所有數據存儲在內存中,適合小規模數據(通常不超過萬行)。內存占用較高,但功能完整,支持所有舊版Excel特性。
XSSFWorkbook
針對Excel 2007及以上版本(.xlsx)的OOXML格式文件。同樣基于內存操作,支持更大數據量(百萬級行),但內存消耗顯著高于HSSFWorkbook。提供更豐富的功能如高級圖表、條件格式化等,但處理速度較慢。
SXSSFWorkbook
XSSFWorkbook的流式擴展版,采用“寫入即丟棄”機制。通過滑動窗口(默認100行)在磁盤生成臨時文件,內存占用恒定,適合處理超大規模數據(千萬級行)。犧牲部分功能(如模板修改、公式計算),但性能最優。需手動清理臨時文件。
關鍵差異總結
- 格式支持:HSSF(.xls) vs XSSF/SXSSF(.xlsx)
- 內存機制:HSSF/XSSF全內存 vs SXSSF磁盤臨時文件
- 數據規模:HSSF(小)< XSSF(中)< SXSSF(大)
- 功能完整性:HSSF/XSSF全功能 vs SXSSF部分受限
選擇建議
- .xls 格式需求→用 HSSFWorkbook
- .xlsx格式+小中數據量+需要完整功能→用 XSSFWorkbook
- .xlsx 格式+大數據量+內存敏感→用 SXSSFWorkbook
注意事項
- 內存問題:XSSFWorkbook 處理大數據時需監控內存,必要時改用
- 臨時文件:SXSSFWorkbookSXSSFWorkbook 默認在 java.io.tmpdir 生成臨時文件,需確保磁盤空間充足
- 功能限制:SXSSFWorkbook 不支持對已刷新的行進行修改,需提前規劃寫入順序。