Skip to main content

SheetJS CE

License Build Status Vulnerabilities npm Downloads GitHub stars

SheetJS Community Edition offers battle-tested open-source solutions for extracting useful data from almost any complex spreadsheet and generating new spreadsheets that will work with legacy and modern software alike.

SheetJS Pro offers solutions beyond data processing: Edit complex templates with ease; let out your inner Picasso with styling; make custom sheets with images/graphs/PivotTables; evaluate formula expressions and port calculations to web apps; automate common spreadsheet tasks, and much more!

Simple Examples

The code editors are live -- feel free to edit! They use ReactJS components and run entirely in the web browser.

Export an HTML Table to Excel XLSX

How to add to your site (click to show)

1) Make sure your table has an ID:

<table id="TableToExport">

2) Include a reference to the SheetJS Library in your page:

<script src="https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js"></script>

3) Add a button that users will click to generate an export

<button id="sheetjsexport"><b>Export as XLSX</b></button>

4) Add an event handler for the click event to create a workbook and download:

<script>
document.getElementById("sheetjsexport").addEventListener('click', function() {
/* Create worksheet from HTML DOM TABLE */
var wb = XLSX.utils.table_to_book(document.getElementById("TableToExport"));
/* Export to file (start a download) */
XLSX.writeFile(wb, "SheetJSTable.xlsx");
});
</script>
How to automate with NodeJS (click to show)

The "Headless Automation" demo includes complete examples using the puppeteer and playwright browser automation frameworks.

Live Example (click to hide)
Result
Loading...
Live Editor
SheetJS Pro Basic extends this export with support for CSS styling and rich text.

Download and Preview a Numbers workbook

How to add to your site (click to show)

1) Create a container DIV for the table:

<div id="TableContainer"></div>

2) Include a reference to the SheetJS Library in your page:

<script src="https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js"></script>

3) Add a script block to download and update the page:

<script>
(async() => {
const f = await fetch(URL_TO_DOWNLOAD); // replace with the URL of the file
const ab = await f.arrayBuffer();

/* Parse file and get first worksheet */
const wb = XLSX.read(ab);
const ws = wb.Sheets[wb.SheetNames[0]];

/* Generate HTML */
var output = document.getElementById("TableContainer");
output.innerHTML = XLSX.utils.sheet_to_html(ws);
})();
</script>
Live Example (click to show)
Result
Loading...
Live Editor
SheetJS Pro Basic extends this import with support for CSS styling and rich text.

Preview a workbook on your device

Live Example (click to hide)

This example starts from a CSV string. Use the File Input element to select a workbook to load. Use the "Export XLSX" button to write the table to XLSX.

Result
Loading...
Live Editor

Browser Testing

Build Status

Supported File Formats

graph of format support

graph legend