forked from sheetjs/sheetjs
xlsx-cli 1.1.3 [ci skip]
This commit is contained in:
parent
79e2773b58
commit
af421e3161
284
README.md
284
README.md
@ -34,6 +34,11 @@ port calculations to web apps; automate common spreadsheet tasks, and much more!
|
||||
|
||||
- [Getting Started](#getting-started)
|
||||
* [Installation](#installation)
|
||||
+ [Standalone Browser Scripts](#standalone-browser-scripts)
|
||||
+ [ECMAScript Modules](#ecmascript-modules)
|
||||
+ [Deno](#deno)
|
||||
+ [NodeJS](#nodejs)
|
||||
+ [Photoshop and InDesign](#photoshop-and-indesign)
|
||||
* [Usage](#usage)
|
||||
* [The Zen of SheetJS](#the-zen-of-sheetjs)
|
||||
* [JS Ecosystem Demos](#js-ecosystem-demos)
|
||||
@ -116,34 +121,26 @@ port calculations to web apps; automate common spreadsheet tasks, and much more!
|
||||
|
||||
### Installation
|
||||
|
||||
**Standalone Browser Scripts**
|
||||
#### Standalone Browser Scripts
|
||||
|
||||
The complete browser standalone build is saved to `dist/xlsx.full.min.js` and
|
||||
can be directly added to a page with a `<script>` tag:
|
||||
Each standalone release script is available at <https://cdn.sheetjs.com/>.
|
||||
|
||||
The current version is `0.18.6` and can be referenced as follows:
|
||||
|
||||
```html
|
||||
<script lang="javascript" src="dist/xlsx.full.min.js"></script>
|
||||
<!-- use version 0.18.6 -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/xlsx.full.min.js"></script>
|
||||
```
|
||||
|
||||
Each standalone release script is available at <https://cdn.sheetjs.com/>. The
|
||||
latest version uses the `latest` tag:
|
||||
The `latest` tag references the latest version and updates with each release:
|
||||
|
||||
```html
|
||||
<!-- use the latest version -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js"></script>
|
||||
```
|
||||
|
||||
A specific release can be referenced by version:
|
||||
|
||||
```html
|
||||
<!-- use version 0.18.5 -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-0.18.5/package/dist/xlsx.full.min.js"></script>
|
||||
```
|
||||
|
||||
For production use, scripts should be downloaded and added to a public folder
|
||||
alongside other scripts.
|
||||
|
||||
</details>
|
||||
**For production use, scripts should be downloaded and added to a public folder
|
||||
alongside other scripts.**
|
||||
|
||||
<details>
|
||||
<summary><b>Browser builds</b> (click to show)</summary>
|
||||
@ -160,130 +157,20 @@ A slimmer build is generated at `dist/xlsx.mini.min.js`. Compared to full build:
|
||||
These scripts are also available on the CDN:
|
||||
|
||||
```html
|
||||
<!-- use xlsx.mini.min.js from the latest version -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.mini.min.js"></script>
|
||||
<!-- use xlsx.mini.min.js from version 0.18.6 -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/xlsx.mini.min.js"></script>
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
With [bower](https://bower.io/search/?q=js-xlsx):
|
||||
[Bower](https://bower.io/search/?q=js-xlsx) will pull the entire repo:
|
||||
|
||||
```bash
|
||||
$ bower install js-xlsx
|
||||
```
|
||||
|
||||
**ECMAScript Modules**
|
||||
|
||||
The ECMAScript Module build is saved to `xlsx.mjs` and can be directly added to
|
||||
a page with a `script` tag using `type="module"`:
|
||||
|
||||
```html
|
||||
<script type="module">
|
||||
import { read, writeFileXLSX } from "https://cdn.sheetjs.com/xlsx-latest/package/xlsx.mjs";
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import { set_cptable } from "https://cdn.sheetjs.com/xlsx-latest/package/xlsx.mjs";
|
||||
import * as cptable from 'https://cdn.sheetjs.com/xlsx-latest/package/dist/cpexcel.full.mjs';
|
||||
set_cptable(cptable);
|
||||
</script>
|
||||
```
|
||||
|
||||
The NodeJS package also exposes the module with the `module` parameter, which is
|
||||
supported in Angular and other projects:
|
||||
|
||||
```ts
|
||||
import { read, writeFileXLSX } from "xlsx";
|
||||
|
||||
/* 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);
|
||||
```
|
||||
|
||||
**Deno**
|
||||
|
||||
`xlsx.mjs` can be imported in Deno:
|
||||
|
||||
```ts
|
||||
// @deno-types="https://cdn.sheetjs.com/xlsx-latest/package/types/index.d.ts"
|
||||
import * as XLSX from 'https://cdn.sheetjs.com/xlsx-latest/package/xlsx.mjs';
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import * as cptable from 'https://cdn.sheetjs.com/xlsx-latest/package/dist/cpexcel.full.mjs';
|
||||
XLSX.set_cptable(cptable);
|
||||
```
|
||||
|
||||
**NodeJS**
|
||||
|
||||
Tarballs are available on <https://cdn.sheetjs.com>.
|
||||
|
||||
<https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz> is a link to the latest
|
||||
version and will refresh on each release.
|
||||
|
||||
Each individual version can be referenced using a similar URL pattern.
|
||||
<https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz> is the URL for `0.18.6`
|
||||
|
||||
Tarballs can be directly installed using a package manager:
|
||||
|
||||
```bash
|
||||
$ npm install https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz # npm
|
||||
$ pnpm install https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz # pnpm
|
||||
$ yarn add https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz # yarn
|
||||
```
|
||||
|
||||
For general stability, "vendoring" modules is the recommended approach:
|
||||
|
||||
1) Download the tarball (`xlsx-<version>.tgz`) for the desired version.
|
||||
|
||||
2) Create a `vendor` subdirectory 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:
|
||||
|
||||
```bash
|
||||
# note : replace $VERSION with the actual version (e.g. latest or 0.18.6)
|
||||
$ npm install --save file:vendor/xlsx-$VERSION.tgz # npm
|
||||
$ pnpm install --save file:vendor/xlsx-$VERSION.tgz # pnpm
|
||||
$ yarn add file:vendor/xlsx-$VERSION.tgz # yarn
|
||||
```
|
||||
|
||||
The package will be installed and accessible as `xlsx`.
|
||||
|
||||
By default, the module supports `require`:
|
||||
|
||||
```js
|
||||
var XLSX = require("xlsx");
|
||||
```
|
||||
|
||||
The module also ships with `xlsx.mjs` for use with `import`:
|
||||
|
||||
```js
|
||||
import * as XLSX from 'xlsx/xlsx.mjs';
|
||||
|
||||
/* load 'fs' for readFile and writeFile support */
|
||||
import * as fs from 'fs';
|
||||
XLSX.set_fs(fs);
|
||||
|
||||
/* load 'stream' for stream support */
|
||||
import { Readable } from 'stream';
|
||||
XLSX.stream.set_readable(Readable);
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import * as cpexcel from 'xlsx/dist/cpexcel.full.mjs';
|
||||
XLSX.set_cptable(cpexcel);
|
||||
```
|
||||
|
||||
**Photoshop and InDesign**
|
||||
|
||||
`dist/xlsx.extendscript.js` is an ExtendScript build for Photoshop and InDesign.
|
||||
<https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.extendscript.js> is the
|
||||
latest build. It can be directly referenced with a `#include` directive:
|
||||
|
||||
```extendscript
|
||||
#include "xlsx.extendscript.js"
|
||||
```
|
||||
|
||||
Bower will place the standalone scripts in `bower_components/js-xlsx/dist/`
|
||||
|
||||
<details>
|
||||
<summary><b>Internet Explorer and ECMAScript 3 Compatibility</b> (click to show)</summary>
|
||||
@ -301,12 +188,147 @@ To use the shim, add the shim before the script tag that loads `xlsx.js`:
|
||||
<script type="text/javascript" src="xlsx.full.min.js"></script>
|
||||
```
|
||||
|
||||
Due to SSL certificate compatibility issues, it is highly recommended to save
|
||||
the Standalone and Shim scripts from <https://cdn.sheetjs.com/> and add to a
|
||||
public directory in the site.
|
||||
|
||||
The script also includes `IE_LoadFile` and `IE_SaveFile` for loading and saving
|
||||
files in Internet Explorer versions 6-9. The `xlsx.extendscript.js` script
|
||||
bundles the shim in a format suitable for Photoshop and other Adobe products.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
#### ECMAScript Modules
|
||||
|
||||
_Browser ESM_
|
||||
|
||||
The ECMAScript Module build is saved to `xlsx.mjs` and can be directly added to
|
||||
a page with a `script` tag using `type="module"`:
|
||||
|
||||
```html
|
||||
<script type="module">
|
||||
import { read, writeFileXLSX } from "https://cdn.sheetjs.com/xlsx-0.18.6/package/xlsx.mjs";
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import { set_cptable } from "https://cdn.sheetjs.com/xlsx-0.18.6/package/xlsx.mjs";
|
||||
import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/cpexcel.full.mjs';
|
||||
set_cptable(cptable);
|
||||
</script>
|
||||
```
|
||||
|
||||
_Frameworks (Angular, VueJS, React) and Bundlers (webpack, etc)_
|
||||
|
||||
The NodeJS package is readily installed from the tarballs:
|
||||
|
||||
```bash
|
||||
$ npm install --save https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # npm
|
||||
$ pnpm install --save https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # pnpm
|
||||
$ yarn add --save https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # yarn
|
||||
```
|
||||
|
||||
Once installed, the library can be imported under the name `xlsx`:
|
||||
|
||||
```ts
|
||||
import { read, writeFileXLSX } from "xlsx";
|
||||
|
||||
/* 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);
|
||||
```
|
||||
|
||||
#### Deno
|
||||
|
||||
`xlsx.mjs` can be imported in Deno:
|
||||
|
||||
```ts
|
||||
// @deno-types="https://cdn.sheetjs.com/xlsx-0.18.6/package/types/index.d.ts"
|
||||
import * as XLSX from 'https://cdn.sheetjs.com/xlsx-0.18.6/package/xlsx.mjs';
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/cpexcel.full.mjs';
|
||||
XLSX.set_cptable(cptable);
|
||||
```
|
||||
|
||||
#### NodeJS
|
||||
|
||||
Tarballs are available on <https://cdn.sheetjs.com>.
|
||||
|
||||
Each individual version can be referenced using a similar URL pattern.
|
||||
<https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz> is the URL for `0.18.6`
|
||||
|
||||
<https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz> is a link to the latest
|
||||
version and will refresh on each release.
|
||||
|
||||
_Installation_
|
||||
|
||||
Tarballs can be directly installed using a package manager:
|
||||
|
||||
```bash
|
||||
$ npm install https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # npm
|
||||
$ pnpm install https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # pnpm
|
||||
$ yarn add https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # yarn
|
||||
```
|
||||
|
||||
For general stability, "vendoring" modules is the recommended approach:
|
||||
|
||||
1) Download the tarball (`xlsx-0.18.6.tgz`) for the desired version. The current
|
||||
version is available at <https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz>
|
||||
|
||||
2) Create a `vendor` subdirectory 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:
|
||||
|
||||
```bash
|
||||
$ npm install --save file:vendor/xlsx-0.18.6.tgz # npm
|
||||
$ pnpm install --save file:vendor/xlsx-0.18.6.tgz # pnpm
|
||||
$ yarn add file:vendor/xlsx-0.18.6.tgz # yarn
|
||||
```
|
||||
|
||||
The package will be installed and accessible as `xlsx`.
|
||||
|
||||
_Usage_
|
||||
|
||||
By default, the module supports `require` and it will automatically add support
|
||||
for streams and filesystem access:
|
||||
|
||||
```js
|
||||
var XLSX = require("xlsx");
|
||||
```
|
||||
|
||||
The module also ships with `xlsx.mjs` for use with `import`. The `mjs` version
|
||||
does not automatically load native node modules:
|
||||
|
||||
```js
|
||||
import * as XLSX from 'xlsx/xlsx.mjs';
|
||||
|
||||
/* load 'fs' for readFile and writeFile support */
|
||||
import * as fs from 'fs';
|
||||
XLSX.set_fs(fs);
|
||||
|
||||
/* load 'stream' for stream support */
|
||||
import { Readable } from 'stream';
|
||||
XLSX.stream.set_readable(Readable);
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import * as cpexcel from 'xlsx/dist/cpexcel.full.mjs';
|
||||
XLSX.set_cptable(cpexcel);
|
||||
```
|
||||
|
||||
#### Photoshop and InDesign
|
||||
|
||||
`dist/xlsx.extendscript.js` is an ExtendScript build for Photoshop and InDesign.
|
||||
<https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/xlsx.extendscript.js> is the
|
||||
current version. After downloading the script, it can be directly referenced
|
||||
with a `#include` directive:
|
||||
|
||||
```extendscript
|
||||
#include "xlsx.extendscript.js"
|
||||
```
|
||||
|
||||
|
||||
### Usage
|
||||
|
||||
Most scenarios involving spreadsheets and data can be broken into 5 parts:
|
||||
|
@ -2,34 +2,26 @@
|
||||
|
||||
### Installation
|
||||
|
||||
**Standalone Browser Scripts**
|
||||
#### Standalone Browser Scripts
|
||||
|
||||
The complete browser standalone build is saved to `dist/xlsx.full.min.js` and
|
||||
can be directly added to a page with a `<script>` tag:
|
||||
Each standalone release script is available at <https://cdn.sheetjs.com/>.
|
||||
|
||||
The current version is `0.18.6` and can be referenced as follows:
|
||||
|
||||
```html
|
||||
<script lang="javascript" src="dist/xlsx.full.min.js"></script>
|
||||
<!-- use version 0.18.6 -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/xlsx.full.min.js"></script>
|
||||
```
|
||||
|
||||
Each standalone release script is available at <https://cdn.sheetjs.com/>. The
|
||||
latest version uses the `latest` tag:
|
||||
The `latest` tag references the latest version and updates with each release:
|
||||
|
||||
```html
|
||||
<!-- use the latest version -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js"></script>
|
||||
```
|
||||
|
||||
A specific release can be referenced by version:
|
||||
|
||||
```html
|
||||
<!-- use version 0.18.5 -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-0.18.5/package/dist/xlsx.full.min.js"></script>
|
||||
```
|
||||
|
||||
For production use, scripts should be downloaded and added to a public folder
|
||||
alongside other scripts.
|
||||
|
||||
</details>
|
||||
**For production use, scripts should be downloaded and added to a public folder
|
||||
alongside other scripts.**
|
||||
|
||||
<details>
|
||||
<summary><b>Browser builds</b> (click to show)</summary>
|
||||
@ -46,130 +38,20 @@ A slimmer build is generated at `dist/xlsx.mini.min.js`. Compared to full build:
|
||||
These scripts are also available on the CDN:
|
||||
|
||||
```html
|
||||
<!-- use xlsx.mini.min.js from the latest version -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.mini.min.js"></script>
|
||||
<!-- use xlsx.mini.min.js from version 0.18.6 -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/xlsx.mini.min.js"></script>
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
With [bower](https://bower.io/search/?q=js-xlsx):
|
||||
[Bower](https://bower.io/search/?q=js-xlsx) will pull the entire repo:
|
||||
|
||||
```bash
|
||||
$ bower install js-xlsx
|
||||
```
|
||||
|
||||
**ECMAScript Modules**
|
||||
|
||||
The ECMAScript Module build is saved to `xlsx.mjs` and can be directly added to
|
||||
a page with a `script` tag using `type="module"`:
|
||||
|
||||
```html
|
||||
<script type="module">
|
||||
import { read, writeFileXLSX } from "https://cdn.sheetjs.com/xlsx-latest/package/xlsx.mjs";
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import { set_cptable } from "https://cdn.sheetjs.com/xlsx-latest/package/xlsx.mjs";
|
||||
import * as cptable from 'https://cdn.sheetjs.com/xlsx-latest/package/dist/cpexcel.full.mjs';
|
||||
set_cptable(cptable);
|
||||
</script>
|
||||
```
|
||||
|
||||
The NodeJS package also exposes the module with the `module` parameter, which is
|
||||
supported in Angular and other projects:
|
||||
|
||||
```ts
|
||||
import { read, writeFileXLSX } from "xlsx";
|
||||
|
||||
/* 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);
|
||||
```
|
||||
|
||||
**Deno**
|
||||
|
||||
`xlsx.mjs` can be imported in Deno:
|
||||
|
||||
```ts
|
||||
// @deno-types="https://cdn.sheetjs.com/xlsx-latest/package/types/index.d.ts"
|
||||
import * as XLSX from 'https://cdn.sheetjs.com/xlsx-latest/package/xlsx.mjs';
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import * as cptable from 'https://cdn.sheetjs.com/xlsx-latest/package/dist/cpexcel.full.mjs';
|
||||
XLSX.set_cptable(cptable);
|
||||
```
|
||||
|
||||
**NodeJS**
|
||||
|
||||
Tarballs are available on <https://cdn.sheetjs.com>.
|
||||
|
||||
<https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz> is a link to the latest
|
||||
version and will refresh on each release.
|
||||
|
||||
Each individual version can be referenced using a similar URL pattern.
|
||||
<https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz> is the URL for `0.18.6`
|
||||
|
||||
Tarballs can be directly installed using a package manager:
|
||||
|
||||
```bash
|
||||
$ npm install https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz # npm
|
||||
$ pnpm install https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz # pnpm
|
||||
$ yarn add https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz # yarn
|
||||
```
|
||||
|
||||
For general stability, "vendoring" modules is the recommended approach:
|
||||
|
||||
1) Download the tarball (`xlsx-<version>.tgz`) for the desired version.
|
||||
|
||||
2) Create a `vendor` subdirectory 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:
|
||||
|
||||
```bash
|
||||
# note : replace $VERSION with the actual version (e.g. latest or 0.18.6)
|
||||
$ npm install --save file:vendor/xlsx-$VERSION.tgz # npm
|
||||
$ pnpm install --save file:vendor/xlsx-$VERSION.tgz # pnpm
|
||||
$ yarn add file:vendor/xlsx-$VERSION.tgz # yarn
|
||||
```
|
||||
|
||||
The package will be installed and accessible as `xlsx`.
|
||||
|
||||
By default, the module supports `require`:
|
||||
|
||||
```js
|
||||
var XLSX = require("xlsx");
|
||||
```
|
||||
|
||||
The module also ships with `xlsx.mjs` for use with `import`:
|
||||
|
||||
```js
|
||||
import * as XLSX from 'xlsx/xlsx.mjs';
|
||||
|
||||
/* load 'fs' for readFile and writeFile support */
|
||||
import * as fs from 'fs';
|
||||
XLSX.set_fs(fs);
|
||||
|
||||
/* load 'stream' for stream support */
|
||||
import { Readable } from 'stream';
|
||||
XLSX.stream.set_readable(Readable);
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import * as cpexcel from 'xlsx/dist/cpexcel.full.mjs';
|
||||
XLSX.set_cptable(cpexcel);
|
||||
```
|
||||
|
||||
**Photoshop and InDesign**
|
||||
|
||||
`dist/xlsx.extendscript.js` is an ExtendScript build for Photoshop and InDesign.
|
||||
<https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.extendscript.js> is the
|
||||
latest build. It can be directly referenced with a `#include` directive:
|
||||
|
||||
```extendscript
|
||||
#include "xlsx.extendscript.js"
|
||||
```
|
||||
|
||||
Bower will place the standalone scripts in `bower_components/js-xlsx/dist/`
|
||||
|
||||
<details>
|
||||
<summary><b>Internet Explorer and ECMAScript 3 Compatibility</b> (click to show)</summary>
|
||||
@ -187,9 +69,144 @@ To use the shim, add the shim before the script tag that loads `xlsx.js`:
|
||||
<script type="text/javascript" src="xlsx.full.min.js"></script>
|
||||
```
|
||||
|
||||
Due to SSL certificate compatibility issues, it is highly recommended to save
|
||||
the Standalone and Shim scripts from <https://cdn.sheetjs.com/> and add to a
|
||||
public directory in the site.
|
||||
|
||||
The script also includes `IE_LoadFile` and `IE_SaveFile` for loading and saving
|
||||
files in Internet Explorer versions 6-9. The `xlsx.extendscript.js` script
|
||||
bundles the shim in a format suitable for Photoshop and other Adobe products.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
#### ECMAScript Modules
|
||||
|
||||
_Browser ESM_
|
||||
|
||||
The ECMAScript Module build is saved to `xlsx.mjs` and can be directly added to
|
||||
a page with a `script` tag using `type="module"`:
|
||||
|
||||
```html
|
||||
<script type="module">
|
||||
import { read, writeFileXLSX } from "https://cdn.sheetjs.com/xlsx-0.18.6/package/xlsx.mjs";
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import { set_cptable } from "https://cdn.sheetjs.com/xlsx-0.18.6/package/xlsx.mjs";
|
||||
import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/cpexcel.full.mjs';
|
||||
set_cptable(cptable);
|
||||
</script>
|
||||
```
|
||||
|
||||
_Frameworks (Angular, VueJS, React) and Bundlers (webpack, etc)_
|
||||
|
||||
The NodeJS package is readily installed from the tarballs:
|
||||
|
||||
```bash
|
||||
$ npm install --save https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # npm
|
||||
$ pnpm install --save https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # pnpm
|
||||
$ yarn add --save https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # yarn
|
||||
```
|
||||
|
||||
Once installed, the library can be imported under the name `xlsx`:
|
||||
|
||||
```ts
|
||||
import { read, writeFileXLSX } from "xlsx";
|
||||
|
||||
/* 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);
|
||||
```
|
||||
|
||||
#### Deno
|
||||
|
||||
`xlsx.mjs` can be imported in Deno:
|
||||
|
||||
```ts
|
||||
// @deno-types="https://cdn.sheetjs.com/xlsx-0.18.6/package/types/index.d.ts"
|
||||
import * as XLSX from 'https://cdn.sheetjs.com/xlsx-0.18.6/package/xlsx.mjs';
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/cpexcel.full.mjs';
|
||||
XLSX.set_cptable(cptable);
|
||||
```
|
||||
|
||||
#### NodeJS
|
||||
|
||||
Tarballs are available on <https://cdn.sheetjs.com>.
|
||||
|
||||
Each individual version can be referenced using a similar URL pattern.
|
||||
<https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz> is the URL for `0.18.6`
|
||||
|
||||
<https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz> is a link to the latest
|
||||
version and will refresh on each release.
|
||||
|
||||
_Installation_
|
||||
|
||||
Tarballs can be directly installed using a package manager:
|
||||
|
||||
```bash
|
||||
$ npm install https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # npm
|
||||
$ pnpm install https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # pnpm
|
||||
$ yarn add https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # yarn
|
||||
```
|
||||
|
||||
For general stability, "vendoring" modules is the recommended approach:
|
||||
|
||||
1) Download the tarball (`xlsx-0.18.6.tgz`) for the desired version. The current
|
||||
version is available at <https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz>
|
||||
|
||||
2) Create a `vendor` subdirectory 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:
|
||||
|
||||
```bash
|
||||
$ npm install --save file:vendor/xlsx-0.18.6.tgz # npm
|
||||
$ pnpm install --save file:vendor/xlsx-0.18.6.tgz # pnpm
|
||||
$ yarn add file:vendor/xlsx-0.18.6.tgz # yarn
|
||||
```
|
||||
|
||||
The package will be installed and accessible as `xlsx`.
|
||||
|
||||
_Usage_
|
||||
|
||||
By default, the module supports `require` and it will automatically add support
|
||||
for streams and filesystem access:
|
||||
|
||||
```js
|
||||
var XLSX = require("xlsx");
|
||||
```
|
||||
|
||||
The module also ships with `xlsx.mjs` for use with `import`. The `mjs` version
|
||||
does not automatically load native node modules:
|
||||
|
||||
```js
|
||||
import * as XLSX from 'xlsx/xlsx.mjs';
|
||||
|
||||
/* load 'fs' for readFile and writeFile support */
|
||||
import * as fs from 'fs';
|
||||
XLSX.set_fs(fs);
|
||||
|
||||
/* load 'stream' for stream support */
|
||||
import { Readable } from 'stream';
|
||||
XLSX.stream.set_readable(Readable);
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import * as cpexcel from 'xlsx/dist/cpexcel.full.mjs';
|
||||
XLSX.set_cptable(cpexcel);
|
||||
```
|
||||
|
||||
#### Photoshop and InDesign
|
||||
|
||||
`dist/xlsx.extendscript.js` is an ExtendScript build for Photoshop and InDesign.
|
||||
<https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/xlsx.extendscript.js> is the
|
||||
current version. After downloading the script, it can be directly referenced
|
||||
with a `#include` directive:
|
||||
|
||||
```extendscript
|
||||
#include "xlsx.extendscript.js"
|
||||
```
|
||||
|
||||
|
||||
|
90
index.html
90
index.html
@ -6,19 +6,25 @@
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title>SheetJS Live Demo</title>
|
||||
<style>
|
||||
#drop{
|
||||
border:2px dashed #bbb;
|
||||
-moz-border-radius:5px;
|
||||
-webkit-border-radius:5px;
|
||||
border-radius:5px;
|
||||
padding:25px;
|
||||
text-align:center;
|
||||
font:20pt bold,"Vollkorn";color:#bbb
|
||||
}
|
||||
#b64data{
|
||||
width:100%;
|
||||
}
|
||||
a { text-decoration: none }
|
||||
#drop-zone{
|
||||
background: white;
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
opacity: 0;
|
||||
z-index: -1;
|
||||
}
|
||||
#drop-zone p, #drop-zone svg { pointer-events: none }
|
||||
#drop-zone svg { margin-right: 5px }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@ -33,28 +39,32 @@ Output Format: <select name="format" onchange="setfmt()">
|
||||
<option value="json"> JSON</option>
|
||||
<option value="form"> FORMULAE</option>
|
||||
<option value="html"> HTML</option>
|
||||
<option value="xlsx"> XLSX</option>
|
||||
</select><br />
|
||||
<div id="drop">Drop a spreadsheet file here to see sheet data</div>
|
||||
<input type="file" name="xlfile" id="xlf" /> ... or click here to select a file
|
||||
<input type="file" name="xlfile" id="xlf" />
|
||||
|
||||
<b> Drop a spreadsheet file anywhere in the page to see sheet data </b>
|
||||
|
||||
<textarea id="b64data">... or paste a base64-encoding here</textarea>
|
||||
<input type="button" id="dotext" value="Click here to process the base64 text" onclick="b64it();"/><br />
|
||||
<b>Advanced Demo Options:</b>
|
||||
Use Web Workers: (when available) <input type="checkbox" name="useworker" checked>
|
||||
Use Web Workers when available: <input type="checkbox" name="useworker" checked>
|
||||
Always use UTF8 for CSV / text: <input type="checkbox" name="useutf8" checked>
|
||||
</pre>
|
||||
<pre id="out"></pre>
|
||||
<div id="htmlout"></div>
|
||||
<div id="drop-zone">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M17 13h-10v-1h10v1zm0-4h-10v1h10v-1zm0-3h-10v1h10v-1zm-15-1v-5h6v2h-4v3h-2zm8-5v2h4v-2h-4zm6 2h4v3h2v-5h-6v2zm6 5h-2v4h2v-4zm-20 10h2v-4h-2v4zm18-4v.543c0 4.107-6 2.457-6 2.457s1.518 6-2.638 6h-1.362v2h2.189c3.163 0 9.811-7.223 9.811-9.614v-1.386h-2zm-18-2h2v-4h-2v4zm2 11v-3h-2v5h6v-2h-4z"/></svg>
|
||||
<p>Drop a spreadsheet file here to see sheet data</p>
|
||||
</div>
|
||||
<br />
|
||||
<!-- uncomment the next line here and in xlsxworker.js for encoding support -->
|
||||
<script src="dist/cpexcel.js"></script>
|
||||
<script src="shim.js"></script>
|
||||
<script src="xlsx.js"></script>
|
||||
<script src="dist/shim.min.js"></script>
|
||||
<script src="dist/xlsx.full.min.js"></script>
|
||||
<script>
|
||||
/*jshint browser:true */
|
||||
/* eslint-env browser */
|
||||
/*global Uint8Array */
|
||||
/*global Uint8Array, Uint16Array, ArrayBuffer */
|
||||
/*global XLSX */
|
||||
/* exported b64it, setfmt */
|
||||
/* eslint no-use-before-define:0 */
|
||||
|
||||
var global_wb;
|
||||
@ -114,6 +124,12 @@ var process_wb = (function() {
|
||||
return "";
|
||||
};
|
||||
|
||||
var to_xlsx = function to_xlsx(workbook) {
|
||||
HTMLOUT.innerHTML = "";
|
||||
XLSX.writeFile(workbook, "SheetJSTest.xlsx");
|
||||
return "";
|
||||
};
|
||||
|
||||
return function process_wb(wb) {
|
||||
global_wb = wb;
|
||||
var output = "";
|
||||
@ -121,6 +137,7 @@ var process_wb = (function() {
|
||||
case "form": output = to_fmla(wb); break;
|
||||
case "html": output = to_html(wb); break;
|
||||
case "json": output = to_json(wb); break;
|
||||
case "xlsx": output = to_xlsx(wb); break;
|
||||
default: output = to_csv(wb);
|
||||
}
|
||||
if(OUT.innerText === undefined) OUT.textContent = output;
|
||||
@ -145,6 +162,8 @@ var do_file = (function() {
|
||||
var domwork = document.getElementsByName("useworker")[0];
|
||||
if(!use_worker) domwork.disabled = !(domwork.checked = false);
|
||||
|
||||
var use_utf8 = false;
|
||||
|
||||
var xw = function xw(data, cb) {
|
||||
var worker = new Worker('./xlsxworker.js');
|
||||
worker.onmessage = function(e) {
|
||||
@ -154,30 +173,30 @@ var do_file = (function() {
|
||||
case 'xlsx': cb(JSON.parse(e.data.d)); break;
|
||||
}
|
||||
};
|
||||
worker.postMessage({d:data,b:'array'});
|
||||
worker.postMessage({d:data,b:'array',c:use_utf8 ? 65001 : void 0});
|
||||
};
|
||||
|
||||
return function do_file(files) {
|
||||
use_worker = domwork.checked;
|
||||
use_utf8 = document.getElementsByName("useutf8")[0].checked;
|
||||
var f = files[0];
|
||||
var reader = new FileReader();
|
||||
reader.onload = function(e) {
|
||||
if(typeof console !== 'undefined') console.log("onload", new Date(), use_worker);
|
||||
var data = new Uint8Array(e.target.result);
|
||||
if(use_worker) xw(data, process_wb);
|
||||
else process_wb(XLSX.read(data, {type: 'array'}));
|
||||
else process_wb(XLSX.read(data, {type: 'array', codepage: use_utf8 ? 65001 : void 0}));
|
||||
};
|
||||
reader.readAsArrayBuffer(f);
|
||||
};
|
||||
})();
|
||||
|
||||
(function() {
|
||||
var drop = document.getElementById('drop');
|
||||
if(!drop.addEventListener) return;
|
||||
var dropZone = document.getElementById('drop-zone')
|
||||
if(!dropZone.addEventListener && !window.addEventListener) return;
|
||||
|
||||
function handleDrop(e) {
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
dropZoneDisplay(e, false);
|
||||
do_file(e.dataTransfer.files);
|
||||
}
|
||||
|
||||
@ -187,9 +206,26 @@ var do_file = (function() {
|
||||
e.dataTransfer.dropEffect = 'copy';
|
||||
}
|
||||
|
||||
drop.addEventListener('dragenter', handleDragover, false);
|
||||
drop.addEventListener('dragover', handleDragover, false);
|
||||
drop.addEventListener('drop', handleDrop, false);
|
||||
function dropZoneDisplay(e, show){
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
|
||||
var opacity = show ? '1' : '0';
|
||||
var zIndex = show ? '1' : '-1';
|
||||
|
||||
dropZone.style.opacity = opacity;
|
||||
dropZone.style.zIndex = zIndex;
|
||||
}
|
||||
|
||||
window.addEventListener('drop' , handleDrop)
|
||||
window.addEventListener('dragover' , handleDragover)
|
||||
window.addEventListener('dragenter' , function(e){
|
||||
dropZoneDisplay(e, true);
|
||||
})
|
||||
|
||||
dropZone.addEventListener('dragleave' , function(e){
|
||||
dropZoneDisplay(e, false);
|
||||
})
|
||||
})();
|
||||
|
||||
(function() {
|
||||
|
@ -32,6 +32,11 @@ port calculations to web apps; automate common spreadsheet tasks, and much more!
|
||||
|
||||
- [Getting Started](#getting-started)
|
||||
* [Installation](#installation)
|
||||
+ [Standalone Browser Scripts](#standalone-browser-scripts)
|
||||
+ [ECMAScript Modules](#ecmascript-modules)
|
||||
+ [Deno](#deno)
|
||||
+ [NodeJS](#nodejs)
|
||||
+ [Photoshop and InDesign](#photoshop-and-indesign)
|
||||
* [Usage](#usage)
|
||||
* [The Zen of SheetJS](#the-zen-of-sheetjs)
|
||||
* [JS Ecosystem Demos](#js-ecosystem-demos)
|
||||
@ -113,33 +118,26 @@ port calculations to web apps; automate common spreadsheet tasks, and much more!
|
||||
|
||||
### Installation
|
||||
|
||||
**Standalone Browser Scripts**
|
||||
#### Standalone Browser Scripts
|
||||
|
||||
The complete browser standalone build is saved to `dist/xlsx.full.min.js` and
|
||||
can be directly added to a page with a `<script>` tag:
|
||||
Each standalone release script is available at <https://cdn.sheetjs.com/>.
|
||||
|
||||
The current version is `0.18.6` and can be referenced as follows:
|
||||
|
||||
```html
|
||||
<script lang="javascript" src="dist/xlsx.full.min.js"></script>
|
||||
<!-- use version 0.18.6 -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/xlsx.full.min.js"></script>
|
||||
```
|
||||
|
||||
Each standalone release script is available at <https://cdn.sheetjs.com/>. The
|
||||
latest version uses the `latest` tag:
|
||||
The `latest` tag references the latest version and updates with each release:
|
||||
|
||||
```html
|
||||
<!-- use the latest version -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js"></script>
|
||||
```
|
||||
|
||||
A specific release can be referenced by version:
|
||||
|
||||
```html
|
||||
<!-- use version 0.18.5 -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-0.18.5/package/dist/xlsx.full.min.js"></script>
|
||||
```
|
||||
|
||||
For production use, scripts should be downloaded and added to a public folder
|
||||
alongside other scripts.
|
||||
|
||||
**For production use, scripts should be downloaded and added to a public folder
|
||||
alongside other scripts.**
|
||||
|
||||
|
||||
The complete single-file version is generated at `dist/xlsx.full.min.js`
|
||||
@ -154,36 +152,73 @@ A slimmer build is generated at `dist/xlsx.mini.min.js`. Compared to full build:
|
||||
These scripts are also available on the CDN:
|
||||
|
||||
```html
|
||||
<!-- use xlsx.mini.min.js from the latest version -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.mini.min.js"></script>
|
||||
<!-- use xlsx.mini.min.js from version 0.18.6 -->
|
||||
<script lang="javascript" src="https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/xlsx.mini.min.js"></script>
|
||||
```
|
||||
|
||||
|
||||
|
||||
With [bower](https://bower.io/search/?q=js-xlsx):
|
||||
[Bower](https://bower.io/search/?q=js-xlsx) will pull the entire repo:
|
||||
|
||||
```bash
|
||||
$ bower install js-xlsx
|
||||
```
|
||||
|
||||
**ECMAScript Modules**
|
||||
Bower will place the standalone scripts in `bower_components/js-xlsx/dist/`
|
||||
|
||||
|
||||
For broad compatibility with JavaScript engines, the library is written using
|
||||
ECMAScript 3 language dialect as well as some ES5 features like `Array#forEach`.
|
||||
Older browsers require shims to provide missing functions.
|
||||
|
||||
To use the shim, add the shim before the script tag that loads `xlsx.js`:
|
||||
|
||||
```html
|
||||
<!-- 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>
|
||||
```
|
||||
|
||||
Due to SSL certificate compatibility issues, it is highly recommended to save
|
||||
the Standalone and Shim scripts from <https://cdn.sheetjs.com/> and add to a
|
||||
public directory in the site.
|
||||
|
||||
The script also includes `IE_LoadFile` and `IE_SaveFile` for loading and saving
|
||||
files in Internet Explorer versions 6-9. The `xlsx.extendscript.js` script
|
||||
bundles the shim in a format suitable for Photoshop and other Adobe products.
|
||||
|
||||
|
||||
|
||||
#### ECMAScript Modules
|
||||
|
||||
_Browser ESM_
|
||||
|
||||
The ECMAScript Module build is saved to `xlsx.mjs` and can be directly added to
|
||||
a page with a `script` tag using `type="module"`:
|
||||
|
||||
```html
|
||||
<script type="module">
|
||||
import { read, writeFileXLSX } from "https://cdn.sheetjs.com/xlsx-latest/package/xlsx.mjs";
|
||||
import { read, writeFileXLSX } from "https://cdn.sheetjs.com/xlsx-0.18.6/package/xlsx.mjs";
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import { set_cptable } from "https://cdn.sheetjs.com/xlsx-latest/package/xlsx.mjs";
|
||||
import * as cptable from 'https://cdn.sheetjs.com/xlsx-latest/package/dist/cpexcel.full.mjs';
|
||||
import { set_cptable } from "https://cdn.sheetjs.com/xlsx-0.18.6/package/xlsx.mjs";
|
||||
import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/cpexcel.full.mjs';
|
||||
set_cptable(cptable);
|
||||
</script>
|
||||
```
|
||||
|
||||
The NodeJS package also exposes the module with the `module` parameter, which is
|
||||
supported in Angular and other projects:
|
||||
_Frameworks (Angular, VueJS, React) and Bundlers (webpack, etc)_
|
||||
|
||||
The NodeJS package is readily installed from the tarballs:
|
||||
|
||||
```bash
|
||||
$ npm install --save https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # npm
|
||||
$ pnpm install --save https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # pnpm
|
||||
$ yarn add --save https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # yarn
|
||||
```
|
||||
|
||||
Once installed, the library can be imported under the name `xlsx`:
|
||||
|
||||
```ts
|
||||
import { read, writeFileXLSX } from "xlsx";
|
||||
@ -194,40 +229,43 @@ import * as cptable from 'xlsx/dist/cpexcel.full.mjs';
|
||||
set_cptable(cptable);
|
||||
```
|
||||
|
||||
**Deno**
|
||||
#### Deno
|
||||
|
||||
`xlsx.mjs` can be imported in Deno:
|
||||
|
||||
```ts
|
||||
// @deno-types="https://cdn.sheetjs.com/xlsx-latest/package/types/index.d.ts"
|
||||
import * as XLSX from 'https://cdn.sheetjs.com/xlsx-latest/package/xlsx.mjs';
|
||||
// @deno-types="https://cdn.sheetjs.com/xlsx-0.18.6/package/types/index.d.ts"
|
||||
import * as XLSX from 'https://cdn.sheetjs.com/xlsx-0.18.6/package/xlsx.mjs';
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import * as cptable from 'https://cdn.sheetjs.com/xlsx-latest/package/dist/cpexcel.full.mjs';
|
||||
import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/cpexcel.full.mjs';
|
||||
XLSX.set_cptable(cptable);
|
||||
```
|
||||
|
||||
**NodeJS**
|
||||
#### NodeJS
|
||||
|
||||
Tarballs are available on <https://cdn.sheetjs.com>.
|
||||
|
||||
<https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz> is a link to the latest
|
||||
version and will refresh on each release.
|
||||
|
||||
Each individual version can be referenced using a similar URL pattern.
|
||||
<https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz> is the URL for `0.18.6`
|
||||
|
||||
<https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz> is a link to the latest
|
||||
version and will refresh on each release.
|
||||
|
||||
_Installation_
|
||||
|
||||
Tarballs can be directly installed using a package manager:
|
||||
|
||||
```bash
|
||||
$ npm install https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz # npm
|
||||
$ pnpm install https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz # pnpm
|
||||
$ yarn add https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz # yarn
|
||||
$ npm install https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # npm
|
||||
$ pnpm install https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # pnpm
|
||||
$ yarn add https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz # yarn
|
||||
```
|
||||
|
||||
For general stability, "vendoring" modules is the recommended approach:
|
||||
|
||||
1) Download the tarball (`xlsx-<version>.tgz`) for the desired version.
|
||||
1) Download the tarball (`xlsx-0.18.6.tgz`) for the desired version. The current
|
||||
version is available at <https://cdn.sheetjs.com/xlsx-0.18.6/xlsx-0.18.6.tgz>
|
||||
|
||||
2) Create a `vendor` subdirectory at the root of your project and move the
|
||||
tarball to that folder. Add it to your project repository.
|
||||
@ -235,21 +273,24 @@ For general stability, "vendoring" modules is the recommended approach:
|
||||
3) Install the tarball using a package manager:
|
||||
|
||||
```bash
|
||||
# note : replace $VERSION with the actual version (e.g. latest or 0.18.6)
|
||||
$ npm install --save file:vendor/xlsx-$VERSION.tgz # npm
|
||||
$ pnpm install --save file:vendor/xlsx-$VERSION.tgz # pnpm
|
||||
$ yarn add file:vendor/xlsx-$VERSION.tgz # yarn
|
||||
$ npm install --save file:vendor/xlsx-0.18.6.tgz # npm
|
||||
$ pnpm install --save file:vendor/xlsx-0.18.6.tgz # pnpm
|
||||
$ yarn add file:vendor/xlsx-0.18.6.tgz # yarn
|
||||
```
|
||||
|
||||
The package will be installed and accessible as `xlsx`.
|
||||
|
||||
By default, the module supports `require`:
|
||||
_Usage_
|
||||
|
||||
By default, the module supports `require` and it will automatically add support
|
||||
for streams and filesystem access:
|
||||
|
||||
```js
|
||||
var XLSX = require("xlsx");
|
||||
```
|
||||
|
||||
The module also ships with `xlsx.mjs` for use with `import`:
|
||||
The module also ships with `xlsx.mjs` for use with `import`. The `mjs` version
|
||||
does not automatically load native node modules:
|
||||
|
||||
```js
|
||||
import * as XLSX from 'xlsx/xlsx.mjs';
|
||||
@ -267,36 +308,18 @@ import * as cpexcel from 'xlsx/dist/cpexcel.full.mjs';
|
||||
XLSX.set_cptable(cpexcel);
|
||||
```
|
||||
|
||||
**Photoshop and InDesign**
|
||||
#### Photoshop and InDesign
|
||||
|
||||
`dist/xlsx.extendscript.js` is an ExtendScript build for Photoshop and InDesign.
|
||||
<https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.extendscript.js> is the
|
||||
latest build. It can be directly referenced with a `#include` directive:
|
||||
<https://cdn.sheetjs.com/xlsx-0.18.6/package/dist/xlsx.extendscript.js> is the
|
||||
current version. After downloading the script, it can be directly referenced
|
||||
with a `#include` directive:
|
||||
|
||||
```extendscript
|
||||
#include "xlsx.extendscript.js"
|
||||
```
|
||||
|
||||
|
||||
|
||||
For broad compatibility with JavaScript engines, the library is written using
|
||||
ECMAScript 3 language dialect as well as some ES5 features like `Array#forEach`.
|
||||
Older browsers require shims to provide missing functions.
|
||||
|
||||
To use the shim, add the shim before the script tag that loads `xlsx.js`:
|
||||
|
||||
```html
|
||||
<!-- 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>
|
||||
```
|
||||
|
||||
The script also includes `IE_LoadFile` and `IE_SaveFile` for loading and saving
|
||||
files in Internet Explorer versions 6-9. The `xlsx.extendscript.js` script
|
||||
bundles the shim in a format suitable for Photoshop and other Adobe products.
|
||||
|
||||
|
||||
### Usage
|
||||
|
||||
Most scenarios involving spreadsheets and data can be broken into 5 parts:
|
||||
|
@ -3,6 +3,11 @@
|
||||
- [xlsx](README.md#sheetjs-js-xlsx)
|
||||
- [Getting Started](README.md#getting-started)
|
||||
* [Installation](README.md#installation)
|
||||
+ [Standalone Browser Scripts](README.md#standalone-browser-scripts)
|
||||
+ [ECMAScript Modules](README.md#ecmascript-modules)
|
||||
+ [Deno](README.md#deno)
|
||||
+ [NodeJS](README.md#nodejs)
|
||||
+ [Photoshop and InDesign](README.md#photoshop-and-indesign)
|
||||
* [Usage](README.md#usage)
|
||||
* [The Zen of SheetJS](README.md#the-zen-of-sheetjs)
|
||||
* [JS Ecosystem Demos](README.md#js-ecosystem-demos)
|
||||
|
@ -32,6 +32,7 @@ function run() {
|
||||
.option('-6, --xlml', 'emit SSML to <sheetname> or <file>.xls (2003 XML)')
|
||||
.option('-T, --fods', 'emit FODS to <sheetname> or <file>.fods (Flat ODS)')
|
||||
.option('--wk3', 'emit WK3 to <sheetname> or <file>.txt (Lotus WK3)')
|
||||
.option('--numbers', 'emit NUMBERS to <sheetname> or <file>.numbers')
|
||||
|
||||
.option('-S, --formulae', 'emit list of values and formulae')
|
||||
.option('-j, --json', 'emit formatted JSON (all fields text)')
|
||||
@ -75,6 +76,7 @@ function run() {
|
||||
['xls', 'xls', 'xls'],
|
||||
['xla', 'xla', 'xla'],
|
||||
['biff5', 'biff5', 'xls'],
|
||||
['numbers', 'numbers', 'numbers'],
|
||||
['ods', 'ods', 'ods'],
|
||||
['fods', 'fods', 'fods'],
|
||||
['wk3', 'wk3', 'wk3']
|
||||
@ -178,6 +180,10 @@ function run() {
|
||||
workbook_formats.forEach(function (m) {
|
||||
if (program[m[0]] || isfmt(m[0])) {
|
||||
wopts.bookType = m[1];
|
||||
if (wopts.bookType == "numbers") try {
|
||||
var XLSX_ZAHL = require("xlsx/dist/xlsx.zahl");
|
||||
wopts.numbers = XLSX_ZAHL;
|
||||
} catch(e) {}
|
||||
if (wb) X.writeFile(wb, program.output || sheetname || ((filename || "") + "." + m[2]), wopts);
|
||||
process.exit(0);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "xlsx-cli",
|
||||
"version": "1.1.2",
|
||||
"version": "1.1.3",
|
||||
"author": "sheetjs",
|
||||
"description": "Command-line interface for SheetJS",
|
||||
"keywords": [
|
||||
@ -24,7 +24,7 @@
|
||||
"dependencies": {
|
||||
"commander": "~2.17.1",
|
||||
"exit-on-epipe": "~1.0.1",
|
||||
"xlsx": "latest"
|
||||
"xlsx": "https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz"
|
||||
},
|
||||
"devDependencies": {
|
||||
},
|
||||
|
@ -10,7 +10,7 @@ importScripts('xlsx.js');
|
||||
onmessage = function (evt) {
|
||||
var v;
|
||||
try {
|
||||
v = XLSX.read(evt.data.d, {type: evt.data.b});
|
||||
v = XLSX.read(evt.data.d, {type: evt.data.b, codepage: evt.data.c});
|
||||
/*::self.*/postMessage({t:"xlsx", d:JSON.stringify(v)});
|
||||
} catch(e) { /*::self.*/postMessage({t:"e",d:e.stack||e}); }
|
||||
};
|
||||
|
2
xlsxworker.js
generated
2
xlsxworker.js
generated
@ -8,7 +8,7 @@ postMessage({t:"ready"});
|
||||
onmessage = function (evt) {
|
||||
var v;
|
||||
try {
|
||||
v = XLSX.read(evt.data.d, {type: evt.data.b});
|
||||
v = XLSX.read(evt.data.d, {type: evt.data.b, codepage: evt.data.c});
|
||||
postMessage({t:"xlsx", d:JSON.stringify(v)});
|
||||
} catch(e) { postMessage({t:"e",d:e.stack||e}); }
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user