EatSheet.xlsx
npm
A1
=ALTERNATIVE("sheetjs", when="you only need to show the file")

A SheetJS alternative for showing Excel files

EatSheet is a free, open-source alternative to SheetJS for showing Excel files in the browser. It opens XLSX, CSV and TSV files in a Web Worker and renders them with their fonts, colours, borders and conditional formatting, in 27 KB gzipped. It reads files and doesn't write them.

EatSheet vs SheetJS, free edition

EatSheet 0.2
SheetJS 0.20.3
Open a 50,000-row XLSX in Node
128–140 ms
546–549 ms
First view in the browser
131–142 ms
1,000–1,142 ms
Longest page freeze
None
1,000–1,141 ms
Memory for that workbook
16–24 MB
76–85 MB
Gzipped size
27 KB
328 KB
Fonts, fills and borders in HTML
Yes
No, styling is in SheetJS Pro
Conditional formatting
Yes
No
Recalculates formulas
Common functions
No, shows saved results
Figures are medians of 7 benchmark runs. Times vary by machine, so compare the ratios rather than the milliseconds. See the full benchmarks.

Switch from SheetJS

npm install eatsheet

SheetJS

EatSheet
XLSX.read(data)
await read(data)
wb.SheetNames
book.sheets.map(s => s.name)
wb.Sheets[name]
book.sheet(name)
ws['B2']?.v
sheet.cell('B2')?.value
ws['!merges']
sheet.merges
XLSX.utils.sheet_to_html(ws)
renderSheet(sheet)

Frequently asked questions

Is EatSheet a SheetJS alternative?

Yes, if you only need to read and show files. EatSheet opens XLSX, CSV and TSV and renders them with their styles. It doesn't write files or read .xls, .xlsb or .ods.

Is EatSheet free?

Yes. It's open source under the Apache-2.0 license, with no paid edition, and styling is included.

Are my files uploaded anywhere?

No. EatSheet parses files on the device in a Web Worker and sends no telemetry. It only makes a network request if you give it a URL to load.

Does it work with React, Vue, Next.js, Angular or Svelte?

Yes. EatSheet has no framework dependency: it returns HTML that you put in an element. There are full examples for React, Vue, Next.js, Angular and Svelte.

Can it edit spreadsheets?

No. EatSheet is a viewer. If people need to change cells, use a spreadsheet editor component instead.