Skip to content

Feature Comparison

ABCrimson edited this page Mar 6, 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 31 5
Ties 2
Total features 310+ 175

modern-xlsx wins: Workbook ops, worksheet ops, cell ops, formulas, merge cells, styling (free), frozen panes, data validation, conditional formatting, hyperlinks, comments, named ranges, page setup, sheet protection, document properties, date utilities, number formatting, rich text, images, barcodes, charts, table layout, tables, print layout, validation/repair, web workers, performance, API design, pivot tables (read-only), threaded comments, slicers, timelines, CLI tool, feature-gated WASM

SheetJS wins: Read formats (18 vs 1), write formats (20 vs 1), I/O ops, sheet conversion, streaming

Ties: Cell reference utilities, shared strings


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
Encrypted XLSX read/write Agile + Standard encryption

4. Workbook Operations

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

5. Cell Operations

Feature modern-xlsx SheetJS Notes
Strings, numbers, booleans
Error values
Date values (native type) cell.dateValue getter
Stub/empty cells Type "stub" / "z"
Inline strings
Formula strings (type)
Style index 🔒 modern-xlsx free
Number format getter cell.numberFormat

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 Notes
Orientation, paper size, fit-to, scale
Page margins
Sheet protection (14 granular fields) 🚧
Frozen panes
Auto filter + filter columns
Headers & footers (odd/even/first) HeaderFooterBuilder API
Print titles (repeating rows/cols) 🔒
Print areas 🔒
Row/column grouping (outline 0-7) 🔒 Collapse/expand API

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. Number Formatting

Feature modern-xlsx SheetJS
Format cell value
Rich format result (text + color)
Load custom format / bulk table
Conditional sections
Color codes ([Red], [Color3])
Locale codes ([$-409]) 🚧

12. Sheet Conversion Utilities

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

13. Streaming

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

14. Rich Text & Images

Feature modern-xlsx SheetJS
RichTextBuilder (bold, italic, colored, styled)
Image embedding (PNG/JPEG/GIF) 🔒
Charts (create) ⭐ 10 types, ChartBuilder API, trendlines, error bars, 3D, combo 🔒

15. Barcode, Table Layout, Validation

Feature modern-xlsx SheetJS Notes
9 barcode types + PNG renderer + XLSX embed
Table layout engine (drawTable/drawTableFromData)
Native Excel Tables (ListObjects) 🔒 Full CRUD + 60 built-in styles
Workbook validation & repair
Web Worker support

16. Worksheet Operations

Feature modern-xlsx SheetJS Notes
Used range (ws.usedRange)
Tab color (ws.tabColor) 🚧
Dynamic array formulas (SPILL) cm="1" attribute

17. Performance

Benchmark modern-xlsx SheetJS Ratio
Read 100K rows faster baseline ~4.0x
Write 100K batch faster baseline ~8.4x
Write 10K cell-by-cell baseline faster ~0.7x
Output file size smaller baseline ~8x
aoaToSheet 50K rows faster baseline ~1.6x
sheetToJson 10K rows baseline faster ~0.6x
sheetToCsv 10K rows tied tied ~1.0x
Bundle size ~300KB (WASM) ~200KB (JS) 1.5x larger
Zero runtime deps
TypeScript types 120+ types basic
Multi-threading rayon flag

18. Advanced Features

Feature modern-xlsx SheetJS Notes
Pivot tables (read-only) 🔒 Full OOXML parsing
Threaded comments (read + write) Modern Excel threads
Slicers (read-only) Pivot table filtering
Timelines (read-only) Date-based filtering
CLI tool (info/convert) npx modern-xlsx
Feature-gated WASM Cargo features
Structured error handling ModernXlsxError with .code

See the full comparison with 310+ features in __tests__/feature-comparison.test.ts

Clone this wiki locally