---
pagination_prev: getting-started/index
pagination_next: getting-started/example
sidebar_position: 2
sidebar_custom_props:
summary: Angular, React, VueJS, Webpack, etc.
---
import current from '/version.js';
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';
# Frameworks and Bundlers
Each standalone release package is available at . The
NodeJS package is designed to be used with frameworks and bundlers. It is a
proper ECMAScript Module release which can be optimized with developer tools.
https://cdn.sheetjs.com/xlsx-{current}/xlsx-{current}.tgz is the URL for version {current}
## Installation
Tarballs can be directly installed using a package manager:
{`\
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`}
{`\
pnpm install https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`}
{`\
yarn add https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`}
Once installed, the library can be imported under the name `xlsx`:
```js
import { read, writeFileXLSX } from "xlsx";
```
The ["Bundlers" demo](/docs/demos/bundler) includes examples for specific tools.
:::tip pass
[Watch the repo](https://git.sheetjs.com/SheetJS/sheetjs) or subscribe to the
[RSS feed](https://git.sheetjs.com/sheetjs/sheetjs/tags.rss) to be notified when
new versions are released!
:::
:::warning
Older releases are technically available on the public npm registry as `xlsx`,
but the registry is out of date. The latest version on that registry is 0.18.5
This is a known registry bug
is the authoritative source for SheetJS scripts.
For existing projects, the easiest approach is to uninstall and reinstall:
{`\
npm rm --save xlsx
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`}
{`\
pnpm rm xlsx
pnpm install https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`}
{`\
yarn remove xlsx
yarn add https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`}
When the `xlsx` library is a dependency of a dependency, the `overrides` field
in `package.json` can control module resolution:
{`\
{
// highlight-start
"overrides": {
"xlsx": "https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz"
}
// highlight-end
}`}
:::
### Vendoring
For general stability, "vendoring" modules is the recommended approach:
1) Download the tarball (xlsx-{current}.tgz
) for the desired version. The current
version is available at https://cdn.sheetjs.com/xlsx-{current}/xlsx-{current}.tgz
2) Create a `vendor` subfolder at the root of your project and move the tarball
to that folder. Add it to your project repository.
3) Install the tarball using a package manager:
{`\
npm i --save file:vendor/xlsx-${current}.tgz`}
{`\
pnpm install file:vendor/xlsx-${current}.tgz`}
{`\
yarn add file:vendor/xlsx-${current}.tgz`}
The package will be installed and accessible as `xlsx`.
## Usage
With most frameworks and bundler tools, named imports are recommended:
```js
import { read, utils } from 'xlsx';
```
Some legacy bundlers require the glob import:
```js
import * as XLSX from 'xlsx';
const { read, utils } = XLSX;
```
For legacy bundlers that support CommonJS, `require` will work:
```js
var XLSX = require("xlsx");
var read = XLSX.read, utils = XLSX.utils;
```
The ["Bundlers" demo](/docs/demos/bundler) includes examples for specific tools.
## Encoding support
If Encoding support is required, `cpexcel.full.mjs` must be manually imported:
```js
/* load the codepage support library for extended support with older formats */
import { set_cptable } from "xlsx";
import * as cptable from 'xlsx/dist/cpexcel.full.mjs';
set_cptable(cptable);
```