Standalone Browser Scripts
Each standalone release script is available at https://cdn.sheetjs.com/.
The current version is 0.20.0 and can be referenced as follows:
<!-- use version 0.20.0 -->
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-0.20.0/package/dist/xlsx.full.min.js"></script>
Watch the repo or subscribe to the RSS feed to be notified when new versions are released!
A number of services host older versions of the SheetJS libraries. Due to syncing issues, they are generally out of date.
The SheetJS CDN https://cdn.sheetjs.com/ is the authoritative source for SheetJS scripts
Browser Scripts
xlsx.full.min.js
is the complete standalone script. It includes support for
reading and writing many spreadsheet formats.
<!-- use xlsx.full.min.js from version 0.20.0 -->
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-0.20.0/package/dist/xlsx.full.min.js"></script>
A slimmer build is generated at dist/xlsx.mini.min.js
. Compared to full build:
- codepage library skipped (no support for XLS encodings)
- no support for XLSB / XLS / Lotus 1-2-3 / SpreadsheetML 2003 / Numbers
- node stream utils removed
How to integrate the mini build (click to show)
Replace references to xlsx.full.min.js
with xlsx.mini.min.js
. Starting from
scratch, a single script tag should be added at the top of the HTML page:
<!-- use xlsx.mini.min.js from version 0.20.0 -->
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-0.20.0/package/dist/xlsx.mini.min.js"></script>
Vendoring
For general stability, "vendoring" scripts is the recommended approach:
1) Download the script (xlsx.full.min.js
) for the desired version. The current version is available at https://cdn.sheetjs.com/xlsx-0.20.0/package/dist/xlsx.full.min.js
2) Move the script to a public
folder with other scripts.
3) Reference the local script from HTML pages:
<script src="/public/xlsx.full.min.js"></script>
This script assigns to window.XLSX
. The global can be used in other scripts.
Internet Explorer and Older Browsers
For broad compatibility with JavaScript engines, the library is written using ECMAScript 3 language dialect. A "shim" script provides implementations of functions for older browsers and environments.
Due to SSL compatibility issues, older versions of IE will not be able to use the CDN scripts directly. They should be downloaded and saved to a public directory in the site:
- Standalone: https://cdn.sheetjs.com/xlsx-0.20.0/package/dist/xlsx.mini.min.js
- Shim: https://cdn.sheetjs.com/xlsx-0.20.0/package/dist/shim.min.js
Add a script
reference to the shim before the standalone script:
<!-- add the shim first -->
<script type="text/javascript" src="shim.min.js"></script>
<!-- after the shim is referenced, add the library -->
<script type="text/javascript" src="xlsx.full.min.js"></script>
Web Workers
The standalone scripts can be loaded using importScripts
at the top of the
worker scripts:
importScripts("https://cdn.sheetjs.com/xlsx-0.20.0/package/dist/shim.min.js");
importScripts("https://cdn.sheetjs.com/xlsx-0.20.0/package/dist/xlsx.full.min.js");
ECMAScript Module Imports
This section refers to imports using script type="module"
. For imports in
modern projects using Webpack or React or Angular or VueJS, the installation is
described in "Frameworks and Bundlers".
The ECMAScript Module build is saved to xlsx.mjs
and can be directly added to
a page with a script
tag using type="module"
:
<script type="module">
import { read, writeFileXLSX } from "https://cdn.sheetjs.com/xlsx-0.20.0/package/xlsx.mjs";
</script>
If Encoding support is required, cpexcel.full.mjs
must be manually imported:
<script type="module">
/* load the codepage support library for extended support with older formats */
import { set_cptable } from "https://cdn.sheetjs.com/xlsx-0.20.0/package/xlsx.mjs";
import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.20.0/package/dist/cpexcel.full.mjs';
set_cptable(cptable);
</script>
Web Worker support is noted in the "Web Workers" demo
Dynamic Imports
Dynamic imports with import()
will only download the SheetJS scripts when they
are used. This example will download the library when data is exported:
<button id="xport">Export</button>
<script type="module">
xport.addEventListener("click", async() => {
/* dynamically import the script in the event listener */
const XLSX = await import("https://cdn.sheetjs.com/xlsx-0.20.0/package/xlsx.mjs");
const wb = XLSX.utils.book_new();
const ws = XLSX.utils.aoa_to_sheet([["a","b","c"],[1,2,3]]);
XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
XLSX.writeFile(wb, "SheetJSESMTest.xlsx");
});
</script>
The callback functions must be marked as async
and the script block must have
the attribute type="module"
If Encoding support is required, cpexcel.full.mjs
must be manually imported:
<button id="xport">Export</button>
<script type="module">
xport.addEventListener("click", async() => {
/* dynamically import the scripts in the event listener */
const XLSX = await import("https://cdn.sheetjs.com/xlsx-0.20.0/package/xlsx.mjs");
const cptable = await import("https://cdn.sheetjs.com/xlsx-0.20.0/package/dist/cpexcel.full.mjs");
XLSX.set_cptable(cptable);
const wb = XLSX.utils.book_new();
const ws = XLSX.utils.aoa_to_sheet([["a","b","c"],[1,2,3]]);
XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
XLSX.writeFile(wb, "SheetJSESMTest.xlsx");
});
</script>
Bower
Bower is deprecated and the maintainers recommend using other tools.
The Bower package manager plays nice with the CDN tarballs:
npx bower install https://cdn.sheetjs.com/xlsx-0.20.0/xlsx-0.20.0.tgz
Bower will place the standalone scripts in bower_components/js-xlsx/dist/