Native XLS Coverage and Limitations
Understand the implemented BIFF8 feature set, worksheet limits, unsupported writer features, and compatibility test expectations.
Updated
What you will learn
- Know the native reader and writer boundary.
- Avoid promising XLS features that are currently XLSX-only.
- Build representative Excel and LibreOffice compatibility fixtures.
Reader coverage#
The reader handles OLE/CFB versions 3 and 4, Workbook and Book streams, worksheet metadata, shared strings and CONTINUE records, numeric and string cell variants, Boolean/error/blank cells, common formulas and cached results, dates, formats, merges, dimensions, projection, and forward row iteration.
Writer features not implemented yet#
| Feature | Current behavior |
|---|---|
| Images, drawings, charts, and pivots | Not written by the native XLS writer. Use XLSX when these are required. |
| Comments, hyperlinks, validation, and conditional formatting | Not written in the first native milestone. |
| AutoFilter, macros, VBA, external links, and defined names | Not written. Macro preservation is not promised. |
| Legacy XLS encryption | Not supported. XLSX provides Office password encryption. |
| Unsupported formulas | Writing throws UnsupportedXlsFeatureException; reading can still expose a diagnostic token representation and cached value. |
Respect BIFF8 physical limits#
Run application compatibility tests#
- Read XLS files generated by the supported Microsoft Excel versions and LibreOffice.
- Open native output in Microsoft Excel desktop and LibreOffice before release.
- Round-trip values, dates, formulas, merged cells, widths, heights, and frozen panes.
- Keep corrupt FAT, cyclic-chain, truncated-record, oversized-stream, and SST continuation fixtures.
- Use XLSX for advanced workbook presentation instead of silently degrading it into XLS.
Was this guide useful?Use GitHub issues for corrections, missing examples, or unclear behavior.
Open an issue