Apache POI™ - HSSF and XSSF Limitations
Current HSSF / XSSF main limitations
The intent of this document is to outline some of the known limitations of the POI HSSF and XSSF APIs. It is not intended to be complete list of every bug or missing feature of HSSF or XSSF, rather it's purpose is to provide a broad feel for some of the functionality that is missing or broken.
-
File sizes/Memory usage
-
There are some inherent limits in the Excel file formats. These are defined in class
SpreadsheetVersion.
As long as you have enough main-memory, you should be able to handle files up to these limits. For huge files
using the default POI classes you will likely need a very large amount of memory.
There are ways to overcome the main-memory limitations if needed:
- For writing very huge files, there is SXSSFWorkbook which allows to do a streaming write of data out to files (with certain limitations on what you can do as only parts of the file are held in memory).
- For reading very huge files, take a look at the sample XLSX2CSV which shows how you can read a file in streaming fashion (again with some limitations on what information you can read out of the file, but there are ways to get at most of it if necessary).
-
There are some inherent limits in the Excel file formats. These are defined in class
SpreadsheetVersion.
As long as you have enough main-memory, you should be able to handle files up to these limits. For huge files
using the default POI classes you will likely need a very large amount of memory.
-
Charts
-
HSSF has some limited support for creating a handful of very simple Chart types,
but largely this isn't supported. HSSF (largely) doesn't support changing Charts.
You can however create a chart in Excel using Named ranges, modify the chart data
values using HSSF and write a new spreadsheet out. This is possible because POI
attempts to keep existing records intact as far as possible.
-
XSSF has only limited chart support including making some simple changes
and adding at least some line and scatter charts, see the examples LineChart
and ScatterChart.
-
HSSF has some limited support for creating a handful of very simple Chart types,
but largely this isn't supported. HSSF (largely) doesn't support changing Charts.
You can however create a chart in Excel using Named ranges, modify the chart data
values using HSSF and write a new spreadsheet out. This is possible because POI
attempts to keep existing records intact as far as possible.
-
Macros
Macros can not be created. The are currently no plans to support macros. However, reading and re-writing files containing macros will safely preserve the macros. Recent versions of Apache POI support extracting the macro data via VBAMacroExtractor and VBAMacroReader
-
Pivot Tables
HSSF doesn't have support for reading or creating Pivot tables. XSSF has limited support for creating Pivot Tables, and very limited read/change support.
by Glen Stampoultzis