Chart creation
Key difference- Lite (free)
- 5 types (bar, col, line, pie, scatter)
- Pro
- Additional types
- ExcelJS 4.4.0
- Not supported (#141, 2016)

Compare
ExcelJS cannot create charts (issue #141, open since 2016). PaperJSX creates native OOXML charts that open and edit in Excel like they were built there.
[01] Side by side
These are the XLSX differences that actually change what you can ship.
| Capability | Lite (free) | Pro | ExcelJS 4.4.0 |
|---|---|---|---|
| Chart creation | 5 types (bar, col, line, pie, scatter) | Additional types | Not supported (#141, 2016) |
| Charts on read/write | Preserved | Same | Destroyed (#1734) |
| Formulas | Stored (not evaluated) | Server-side evaluation | Stored (not evaluated) |
| Conditional formatting | Data bars, icon sets, color scales | Same | Partial |
| Streaming | — | — | Yes (WorkbookReader/Writer) |
| File size | 37% smaller (benchmarked) | Same | Baseline |
| Repair pipeline | — | 16-strategy | None |
| API style | JSON declarative | Same | Imperative worksheet.addRow() |
[02] The chart gap
ExcelJS issue #141 has been open since 2016. That is the difference that usually forces the evaluation. PaperJSX creates native OOXML charts directly, which is why it fits export workflows where the spreadsheet itself is a deliverable instead of an internal workbook object.
[03] The real tradeoff
These libraries overlap less than people expect. One is stronger at generation with charts. The other is stronger at broad workbook manipulation.
Generation-first route
Best when the exported spreadsheet needs native charts, cleaner packaging, and a generation path built around output quality.
Workbook toolkit
If you only need to read, mutate, or stream existing files and do not need native chart output, ExcelJS may cover your needs.
Paste your data into the playground, download the file, and open it in Excel. The charts are native and editable — no workarounds needed.