Skip to content

Feature Comparison

ABCrimson edited this page Mar 3, 2026 · 7 revisions

Feature Comparison: modern-xlsx vs SheetJS

Exhaustive capability matrix — every feature either library supports, compared side-by-side.

Legend Meaning
Fully supported
Supported + superior implementation
🔒 SheetJS Pro only (paid license)
Not supported
🚧 Partial / limited support

Scorecard

modern-xlsx SheetJS
Categories won 20 8
Ties 4
Total features 250 173

modern-xlsx wins: Workbook ops, merge cells, styling (free), frozen panes, data validation, conditional formatting, hyperlinks, comments, named ranges, page setup, sheet protection, date utilities, rich text, images, barcodes, table layout, validation/repair, web workers, performance, API design

SheetJS wins: Read formats (18 vs 1), write formats (20 vs 1), I/O ops, document properties, cell ref utils, number formatting, sheet conversion, streaming


1. Read Format Support

Format modern-xlsx SheetJS Notes
XLSX (Office Open XML) Both full support
XLSM (Macro-enabled) Data only, no macros
XLSB (Binary)
XLS (BIFF8/5/4/3/2) Legacy Excel 97-2003
XLML (SpreadsheetML 2003)
ODS (OpenDocument)
FODS (Flat ODS)
CSV
TSV / TXT
HTML tables
SYLK
DIF
PRN
ETH (EtherCalc)
DBF (dBASE)
WK1/WK3/WKS (Lotus)
QPW (Quattro Pro)
Numbers (Apple) Requires numbers option

2. Write Format Support

Format modern-xlsx SheetJS Notes
XLSX modern-xlsx: 8x smaller output
XLSM
XLSB
XLS (BIFF8/5)
XLS (BIFF4/3/2)
XLML
ODS / FODS
CSV modern-xlsx: string only via sheetToCsv
HTML modern-xlsx: string only via sheetToHtml
Others (SYLK, DIF, RTF, etc.) 10+ additional legacy formats

3. I/O Operations

Feature modern-xlsx SheetJS Notes
Read from buffer
Read from file
Read sync modern-xlsx: async-only (WASM)
Write to buffer
Write to file
Write sync
Write to Blob (browser) Native WASM Blob
Parse CFB / ZIP
Custom FS / codepage
WASM init

4. Workbook Operations

Feature modern-xlsx SheetJS
Create / get / add / remove sheets ✅ (no remove)
Sheet visibility
Date system
Workbook views 🚧
Document properties 🚧
Serialize to JSON
Validate workbook
Repair workbook

5. Cell Operations

Feature modern-xlsx SheetJS Notes
Strings, numbers, booleans
Error values
Date values (native type) SheetJS type "d"
Stub/empty cells SheetJS type "z"
Inline strings
Formula strings (type)
Style index 🔒 modern-xlsx free
Number format override 🚧 SheetJS: per-cell .z

6. Styling

Feature modern-xlsx SheetJS Notes
Style builder (fluent API)
Font (name, size, bold, italic, color, underline, strike) 🔒 Free vs paid
Fill (solid, 18 patterns, gradient) 🔒
Border (4 sides + diagonal, 13 styles, colors) 🔒
Alignment (H/V, wrap, rotation, indent, shrink) 🔒
Cell protection (locked/hidden) 🔒
Number format (custom/built-in) Community has per-cell .z
DXF / Cell styles / CellXf / Theme colors

7. Data Validation & Conditional Formatting

Feature modern-xlsx SheetJS
All validation types (list, whole, decimal, date, time, textLength, custom) 🔒
Input prompts and error alerts 🔒
Color scales / data bars / icon sets 🔒
DXF style references / CFVO 🔒

8. Hyperlinks, Comments, Named Ranges

Feature modern-xlsx SheetJS
Add/remove hyperlinks with tooltip ✅ (no tooltip, no remove)
Add/remove comments ✅ (no remove)
Full CRUD named ranges 🚧 (read-only)

9. Page Setup, Protection, Frozen Panes

Feature modern-xlsx SheetJS
Orientation, paper size, fit-to, scale
Page margins
Sheet protection (14 granular fields) 🚧
Frozen panes
Auto filter + filter columns

10. Cell Reference & Date Utilities

Feature modern-xlsx SheetJS
Column ↔ letter, cell encode/decode, range encode/decode
Encode/decode row, split cell ref
Date ↔ serial, Temporal-like input
Parse date code

11. Sheet Conversion Utilities

Feature modern-xlsx SheetJS
AoA/JSON → sheet, sheet → JSON/CSV/HTML
Add AoA/JSON to existing sheet
Sheet → TXT / formulae / row objects
DOM table → sheet/book

12. Streaming

Feature modern-xlsx SheetJS
Stream to JSON/CSV/HTML/XLML
WASM streaming reader (SAX)
Parallel sheet parsing (rayon)

13. Rich Text & Images

Feature modern-xlsx SheetJS
RichTextBuilder (bold, italic, colored, styled)
Image embedding (PNG/JPEG/GIF) 🔒
Charts (create) 🔒

14. Barcode, Table Layout, Validation

Feature modern-xlsx SheetJS
9 barcode types + PNG renderer + XLSX embed
Table layout engine (drawTable/drawTableFromData)
Workbook validation & repair
Web Worker support

15. Performance

Benchmark modern-xlsx SheetJS Ratio
Read 10K rows faster baseline ~4.6x
Write 10K rows faster baseline ~1.3x
Output file size smaller baseline ~8x
aoaToSheet 50K rows faster baseline ~2x
sheetToJson 10K rows faster baseline ~2x
sheetToCsv 10K rows faster baseline ~2.4x
Bundle size ~300KB (WASM) ~200KB (JS) 1.5x larger
Zero runtime deps
TypeScript types 109+ types basic
Multi-threading rayon flag

See the full comparison with 250 features in docs/FEATURE-COMPARISON.md

Clone this wiki locally