This commit is contained in:
SheetJS 2022-08-13 18:01:26 -04:00
parent b2ef80c897
commit ee071949a3
51 changed files with 313 additions and 78 deletions

@ -39,6 +39,9 @@ Once installed, the library can be imported under the name `xlsx`:
import { read, writeFileXLSX } from "xlsx";
```
The ["Bundlers" demo](../../demos/bundler) includes examples for specific
bundler tools.
:::warning
Older releases are technically available on the public npm registry as `xlsx`,

@ -34,7 +34,7 @@ define(['N/file', './xlsx.full.min'], function(file, XLSX) {
})
```
As explained in the [NetSuite demo](../getting-started/demos/netsuite), module
As explained in the [NetSuite demo](../../demos/netsuite), module
aliases are created in config files referenced via `@NAmdConfig` comments.
## SAP UI5

@ -1,4 +1,4 @@
{
"label": "Installation",
"position": 2
"position": 1
}

@ -1,8 +1,8 @@
---
sidebar_position: 3
sidebar_position: 2
---
# Complete Example
# Tutorial
SheetJS presents a simple JS interface that works with "Array of Arrays" and
"Array of JS Objects". The API functions are building blocks that should be

@ -1,5 +1,5 @@
---
sidebar_position: 1
sidebar_position: 3
---
# Roadmap

@ -1,5 +1,5 @@
---
sidebar_position: 2
sidebar_position: 4
hide_table_of_contents: true
---
@ -20,7 +20,7 @@ representation of the core concepts of a workbook. The various functions in the
library provide low-level tools for working with the object.
For friendly JS processing, there are utility functions for converting parts of
a worksheet to/from an Array of Arrays. The [Complete example](../03-example.mdx)
a worksheet to/from an Array of Arrays. The [Complete example](./02-example.mdx)
combines powerful JS Array methods with a network request library to download
data, select the information we want and create a workbook file:

@ -1,5 +1,5 @@
{
"label": "Getting Started",
"collapsed": false,
"position": 4
"position": 2
}

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

@ -0,0 +1,29 @@
---
hide_table_of_contents: true
---
# Getting Started
["Tutorial"](./02-example.mdx) is a live example that covers general data
munging and data export to spreadsheets.
## Installation
import DocCardList from '@theme/DocCardList';
import {useCurrentSidebarCategory} from '@docusaurus/theme-common';
<https://cdn.sheetjs.com> is the primary software distribution site. Please
read the installation instructions for your use case:
<ul>{useCurrentSidebarCategory().items.map((item, index) => {
if(item.label != "Installation") return "";
return item.items.map((item, index) => {
const listyle = (item.customProps?.icon) ? {
listStyleImage: `url("${item.customProps.icon}")`
} : {};
return (<li style={listyle} {...(item.customProps?.class ? {className: item.customProps.class}: {})}>
<a href={item.href}>{item.label}</a>{item.customProps?.summary && (" - " + item.customProps.summary)}
</li>);
});
})}</ul>

@ -1,20 +0,0 @@
---
hide_table_of_contents: true
---
# Installation
import DocCardList from '@theme/DocCardList';
import {useCurrentSidebarCategory} from '@docusaurus/theme-common';
<https://cdn.sheetjs.com> is the primary software distribution site. Please
read the installation instructions for your use case:
<ul>{useCurrentSidebarCategory().items.map((item, index) => {
const listyle = (item.customProps?.icon) ? {
listStyleImage: `url("${item.customProps.icon}")`
} : {};
return (<li style={listyle} {...(item.customProps?.class ? {className: item.customProps.class}: {})}>
<a href={item.href}>{item.label}</a>{item.customProps?.summary && (" - " + item.customProps.summary)}
</li>);
})}</ul>

@ -107,7 +107,7 @@ should see a page like
## Adding the Standalone Script
The [standalone script](../../installation/standalone) can be downloaded and
The [standalone script](../getting-started/installation/standalone) can be downloaded and
added as a static resource. Due to Salesforce naming restrictions, it will have
to be renamed to `sheetjs.js` when adding the static resource.

@ -23,7 +23,7 @@ extension development is assumed.
## ExtendScript Scripts
[Installation is straightforward:](../../installation/extendscript) download a
[Installation is straightforward:](../getting-started/installation/extendscript) download a
script and move it to your project directory.
### Reading Files
@ -179,12 +179,12 @@ and place in the scripts directory. For CS6 Windows 10 the path is typically
## CEP
[The standalone scripts](../../installation/standalone) can be added to CEP
[The standalone scripts](../getting-started/installation/standalone) can be added to CEP
extension HTML
## UXP
UXP officially recommends `require` and NodeJS Modules for third party support.
[Use the "Frameworks" instructions to download.](../../installation/frameworks)
[Use the "Frameworks" instructions to download.](../getting-started/installation/frameworks)

@ -3,11 +3,14 @@ sidebar_position: 6
title: HTTP Network Requests
---
# XHR and fetch
<head>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://unpkg.com/superagent@7.1.1/dist/superagent.min.js"></script>
</head>
`XMLHttpRequest` and `fetch` browser APIs enable binary data transfer between
web browser clients and web servers. Since this library works in web browsers,
server conversion work can be offloaded to the client! This demo shows a few
@ -384,7 +387,7 @@ function SheetJSAxiosUL() {
</details>
### superagent Wrapper Library
#### superagent
The `superagent` library usage mirrors XHR:

@ -8,7 +8,7 @@ Headless automation involves controlling "headless browsers" to access websites
and submit or download data. It is also possible to automate browsers using
custom browser extensions.
The [SheetJS standalone script](../../installation/standalone) can be added to
The [SheetJS standalone script](../getting-started/installation/standalone) can be added to
any website by inserting a `SCRIPT` tag. Headless browsers usually provide
utility functions for running custom snippets in the browser and passing data
back to the automation script.

@ -30,7 +30,7 @@ var XLSX = require("xlsx");
// ... use XLSX ...
```
[After installing the module](../../installation/nodejs), bundling is easy:
[After installing the module](../getting-started/installation/nodejs), bundling is easy:
```bash
browserify app.js > browserify.js
@ -351,7 +351,7 @@ Parcel version 1.5.0 or later.
<details><summary><b>Complete Example</b> (click to show)</summary>
This demo follows the [Presidents Example](../../example).
This demo follows the [Presidents Example](../getting-started/example).
1) Save the following to `index.html`:
@ -433,7 +433,7 @@ click the "Click to Export!" button to generate a file.
## RequireJS
[Standalone scripts](../../installation/standalone) comply with AMD `define`
[Standalone scripts](../getting-started/installation/standalone) comply with AMD `define`
semantics, enabling use in RequireJS out of the box.
To enable use of the alias `xlsx`, the RequireJS config should set an alias in
@ -1067,7 +1067,7 @@ Webpack bundled the CommonJS build in older versions of the library. Version
`0.18.1` changed the NodeJS module package so that Webpack uses the ESM build.
The ESM build does not include the codepage support library for XLS reading.
[As described in the installation instructions](../../installation/frameworks),
[As described in the installation instructions](../getting-started/installation/frameworks),
the codepage dependency should be imported explicitly:
```js

@ -120,7 +120,7 @@ This indicates that the SheetJS library has been loaded.
## Dynamic Arrays and SheetJS Array of Arrays
The [`sheet_to_json`](../../api/utilities#json) helper function can generate
The [`sheet_to_json`](../api/utilities#json) helper function can generate
arrays of arrays of values based on the worksheet data. Excel custom functions
transparently treat these as Dynamic Arrays.
@ -160,7 +160,7 @@ var wb = XLSX.read(ab); // parse workbook
For the purposes of this demo, a Base64-encoded file will be used. The
workaround involves fetching that Base64 file, getting the text, and parsing
with the [`base64` type:](../../api/parse-options#input-type)
with the [`base64` type:](../api/parse-options#input-type)
```js
async function extern() {

@ -14,7 +14,7 @@ SheetJS libraries strive to maintain broad browser and JS engine compatibility.
## Integration
The ["Standalone Browser Scripts"](../../installation/standalone) section has
The ["Standalone Browser Scripts"](../getting-started/installation/standalone) section has
instructions for obtaining or referencing the standalone scripts. These are
designed to be referenced with `<script>` tags.

@ -1,6 +1,6 @@
---
sidebar_position: 15
title: Chrome and Chromium
title: Chrome Extensions
---
:::warning

@ -9,7 +9,7 @@ windowing framework. SheetJS is compatible with many toolkits.
## NW.js
The [Standalone scripts](../../installation/standalone) can be referenced in a
The [Standalone scripts](../getting-started/installation/standalone) can be referenced in a
`SCRIPT` tag from the entry point HTML page.
This demo was tested against NW.js 0.66.0.
@ -66,7 +66,7 @@ This will generate the standalone app in the `build\sheetjs-nwjs\` folder.
The standard HTML5 `FileReader` techniques from the browser apply to NW.js!
NW.js handles the OS minutiae for dragging files into app windows. The
[drag and drop snippet](../../solutions/input#example-user-submissions) apply
[drag and drop snippet](../solutions/input#example-user-submissions) apply
to DIV elements on the page.
Similarly, file input elements automatically map to standard Web APIs.
@ -129,7 +129,7 @@ input.click();
## Electron
The [NodeJS Module](../../installation/nodejs) can be imported from the main or
The [NodeJS Module](../getting-started/installation/nodejs) can be imported from the main or
the renderer thread.
Electron presents a `fs` module. The `require('xlsx')` call loads the CommonJS
@ -186,7 +186,7 @@ For a recent Intel Mac, the path will be `out/sheetjs-electron-darwin-x64/`
### Writing Files
[`XLSX.writeFile`](../../api/write-options) writes workbooks to the filesystem.
[`XLSX.writeFile`](../api/write-options) writes workbooks to the filesystem.
`showSaveDialog` shows a Save As dialog and returns the selected file name:
```js
@ -254,7 +254,7 @@ document.getElementById("xlf").addEventListener("change", handleFile, false);
**Drag and Drop**
The [drag and drop snippet](../../solutions/input#example-user-submissions)
The [drag and drop snippet](../solutions/input#example-user-submissions)
applies to DIV elements on the page.
For example, assuming a DIV on the page:
@ -282,7 +282,7 @@ document.getElementById("drop").addEventListener("drop", handleDrop, false);
**Electron API**
[`XLSX.readFile`](../../api/parse-options) reads workbooks from the filesystem.
[`XLSX.readFile`](../api/parse-options) reads workbooks from the filesystem.
`showOpenDialog` shows a Save As dialog and returns the selected file name.
Unlike the Web APIs, the `showOpenDialog` flow can be initiated by app code:

@ -40,7 +40,7 @@ provide, usually there are third-party modules to provide needed functionality.
:::note
This demo was tested on an Intel Mac on August 10 2022. NativeScript version
This demo was tested on an Intel Mac on 2022 August 10. NativeScript version
(as verified with `ns --version`) is `8.3.2`. The iOS simulator runs iOS 15.5
on an iPhone SE 3rd generation.
@ -107,7 +107,7 @@ await file.writeText(bstr, encoding.ISO_8859_1);
The demo builds off of the NativeScript + Angular example. Familiarity with
with Angular and TypeScript is assumed.
<details open><summary><b>Complete Example</b> (click to show)</summary>
<details><summary><b>Complete Example</b> (click to show)</summary>
0) Follow the official Environment Setup instructions (tested with "macOS + iOS")

@ -0,0 +1,217 @@
---
sidebar_position: 20
title: Content and Site Generation
---
With the advent of server-side frameworks and content management systems, it is
possible to build sites whose source of truth is a spreadsheet! This demo
explores a number of approaches.
## GatsbyJS
[`gatsby-transformer-excel`](https://www.gatsbyjs.com/plugins/gatsby-transformer-excel/)
generates nodes for each data row of each worksheet. The official documentation
includes examples and more detailed usage instructions.
:::note
`gatsby-transformer-excel` is maintained by the Gatsby core team and all bugs
should be directed to the main Gatsby project. If it is determined to be a bug
in the parsing logic, issues should then be raised with the SheetJS project.
:::
## NuxtJS
`@nuxt/content` is a file-based CMS for Nuxt, enabling static-site generation
and on-demand server rendering powered by spreadsheets.
#### nuxt.config.js configuration
Through an override in `nuxt.config.js`, Nuxt Content will use custom parsers.
Differences from a stock `create-nuxt-app` config are shown below:
```js
// highlight-start
import { readFile, utils } from 'xlsx';
// This will be called when the files change
const parseSheet = (file, { path }) => {
// `path` is a path that can be read with `XLSX.readFile`
const wb = readFile(path);
const o = wb.SheetNames.map(name => ({ name, data: utils.sheet_to_json(wb.Sheets[name])}));
return { data: o };
}
// highlight-end
export default {
// ...
// highlight-start
// content.extendParser allows us to hook into the parsing step
content: {
extendParser: {
// the keys are the extensions that will be matched. The "." is required
".numbers": parseSheet,
".xlsx": parseSheet,
".xls": parseSheet,
// can add other extensions like ".fods" as desired
}
},
// highlight-end
// ...
}
```
#### Template Use
When a spreadsheet is placed in the `content` folder, Nuxt will find it. The
data can be referenced in a view with `asyncData`. The name should not include
the extension, so `"sheetjs.numbers"` would be referenced as `"sheetjs"`:
```js
async asyncData ({$content}) {
return {
// $content('sheetjs') will match files with extensions in nuxt.config.js
data: await $content('sheetjs').fetch()
};
}
```
In the template, `data.data` is an array of objects. Each object has a `name`
property for the worksheet name and a `data` array of row objects. This maps
neatly with nested `v-for`:
```xml
<!-- loop over the worksheets -->
<div v-for="item in data.data" v-bind:key="item.name">
<table>
<!-- loop over the rows of each worksheet -->
<tr v-for="row in item.data" v-bind:key="row.Index">
<!-- here `row` is a row object generated from sheet_to_json -->
<td>{{ row.Name }}</td>
<td>{{ row.Index }}</td>
</tr>
</table>
</div>
```
### Nuxt Content Demo
<details open><summary><b>Complete Example</b> (click to show)</summary>
:::note
This was tested against `create-nuxt-app v4.0.0` on 2022 August 13.
:::
1) Create a stock app:
```bash
npx create-nuxt-app SheetJSNuxt
```
When prompted, enter the following options:
- `Project name`: hit Enter (use default SheetJSNuxt)
- `Programming language`: hit Down Arrow (`TypeScript` selected) and hit Enter
- `Package manager`: select `Npm` and hit Enter
- `UI framework`: select `None` and hit Enter
- `Nuxt.js modules`: scroll to `Content`, select with Space, then hit Enter
- `Linting tools`: hit Enter (do not select any Linting tools)
- `Testing framework`: select `None` and hit Enter
- `Rendering mode`: select `Universal (SSR / SSG)` and hit Enter
- `Deployment target`: select `Static (Static/Jamstack hosting)` and hit Enter
- `Development tools`: hit Enter (do not select any Development tools)
- `What is your GitHub username?`: hit Enter
- `Version control system`: select `None`
The project will be configured and modules will be installed.
2) Install the SheetJS library and start the dev server:
```bash
cd SheetJSNuxt
npm i --save https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz
npm run dev
```
When the build finishes, the terminal will display a URL like:
```
Listening on: http://localhost:64688/ 05:41:11
No issues found. 05:41:11
```
The dev server is listening on that URL. Open the link in a web browser.
3) Download <https://sheetjs.com/pres.xlsx> and move to the `content` folder.
4) Modify `nuxt.config.js` as described [earlier](#nuxtconfigjs-configuration)
5) Replace `pages/index.vue` with the following:
```html
<!-- sheetjs (C) 2013-present SheetJS -- http://sheetjs.com -->
<template><div>
<div v-for="item in data.data" v-bind:key="item.name">
<h2>{{ item.name }}</h2>
<table><thead><tr><th>Name</th><th>Index</th></tr></thead><tbody>
<tr v-for="row in item.data" v-bind:key="row.Index">
<td>{{ row.Name }}</td>
<td>{{ row.Index }}</td>
</tr>
</tbody></table>
</div>
</div></template>
<script>
export default {
async asyncData ({$content}) {
return {
data: await $content('pres').fetch()
};
}
}
</script>
```
The browser should refresh to show the contents of the spreadsheet. If it does
not, hit Refresh manually or open a new browser window.
![Nuxt Demo end of step 5](pathname:///nuxt/nuxt5.png)
6) To verify that hot loading works, open `pres.xlsx` from the `content` folder
in Excel. Add a new row to the bottom and save the file:
![Adding a new line to `pres.xlsx`](pathname:///nuxt/nuxl6.png)
The dev server terminal should show a line like:
```
Updated ./content/pres.xlsx @nuxt/content 05:43:37
```
The page should automatically refresh with the new content:
![Nuxt Demo end of step 6](pathname:///nuxt/nuxt6.png)
7) Stop the dev server (hit `CTRL+C` in the terminal window) and run
```bash
npm run generate
```
This will create a static site in the `dist` folder, which can be served with:
```bash
npx http-server dist
```
Accessing the page http://localhost:8080 will show the page contents. Verifying
the static nature is trivial: make another change in Excel and save. The page
will not change.
</details>

@ -1,4 +1,4 @@
{
"label": "Demos",
"position": 3
"position": 4
}

@ -37,6 +37,7 @@ The demo projects include small runnable examples and short explainers.
- [`Command-Line Tools`](./cli)
- [`iOS / Android Mobile Applications`](./mobile)
- [`NodeJS Server-Side Processing`](https://github.com/SheetJS/SheetJS/tree/master/demos/server/)
- [`Content Management and Static Sites`](./content)
- [`Electron`](./desktop#electron)
- [`NW.js`](./desktop#nwjs)
- [`Chrome / Chromium Extension`](./chromium)

@ -47,7 +47,7 @@ Deno scripts must be invoked with `--allow-read` to read from the filesystem.
Here are a few common scenarios (click on each subtitle to see the code).
The [demos](../getting-started/demos) cover special deployments in more detail.
The [demos](../demos) cover special deployments in more detail.
### Example: Local File
@ -90,7 +90,7 @@ var XLSX = require("xlsx");
var workbook = XLSX.readFile(path);
```
Electron APIs have changed over time. The [`electron` demo](../getting-started/demos/desktop#electron)
Electron APIs have changed over time. The [`electron` demo](../demos/desktop#electron)
shows a complete example and details the required version-specific settings.
</TabItem>
@ -195,7 +195,7 @@ var thisFile = File.openDialog("Select a spreadsheet");
var workbook = XLSX.readFile(thisFile.absoluteURI);
```
The [`extendscript` demo](../getting-started/demos/extendscript) includes a more complex example.
The [`extendscript` demo](../demos/extendscript) includes a more complex example.
</TabItem>
<TabItem value="deno" label="Deno">
@ -498,7 +498,7 @@ req.onload = function(e) {
req.send();
```
The [`xhr` demo](../getting-started/demos/network) includes a longer discussion and more examples.
The [`xhr` demo](../demos/network) includes a longer discussion and more examples.
<http://oss.sheetjs.com/sheetjs/ajax.html> shows fallback approaches for IE6+.
@ -551,7 +551,7 @@ const url = "http://oss.sheetjs.com/test_files/formula_stress_test.xlsx";
</TabItem>
<TabItem value="bun" label="Bun">
Bun has native support for `fetch`. Using the [NodeJS package](../installation/nodejs):
Bun has native support for `fetch`. Using the [NodeJS package](../getting-started/installation/nodejs):
```js
import * as XLSX from 'xlsx/xlsx.mjs';
@ -797,8 +797,8 @@ the optional `opts` argument in more detail.
#### Examples
["Complete Example"](../example) contains a detailed example "Get Data
from a JSON Endpoint and Generate a Workbook"
["Complete Example"](../getting-started/example) contains a detailed example
"Get Data from a JSON Endpoint and Generate a Workbook"
[`x-spreadsheet`](https://github.com/myliang/x-spreadsheet) is an interactive
data grid for previewing and modifying structured data in the web browser. The
@ -806,7 +806,7 @@ data grid for previewing and modifying structured data in the web browser. The
includes a sample script with the `xtos` function for converting from
x-spreadsheet to a workbook. Live Demo: <https://oss.sheetjs.com/sheetjs/x-spreadsheet>
["Typed Arrays and ML"](../getting-started/demos/ml) covers strategies for
["Typed Arrays and ML"](../demos/ml) covers strategies for
creating worksheets from ML library exports (datasets stored in Typed Arrays).
<details>
@ -850,7 +850,7 @@ is missing or no options are specified, the default name `Sheet1` is used.
#### Examples
The [Headless Demo](../getting-started/demos/headless) includes examples of
The [Headless Demo](../demos/headless) includes examples of
server-side spreadsheet generation from HTML TABLE elements using headless
Chromium ("Puppeteer") and other browsers ("Playwright")

@ -64,7 +64,7 @@ files. The APIs do not generally provide feedback on whether files were created.
Here are a few common scenarios (click on each subtitle to see the code).
The [demos](../getting-started/demos) cover special deployments in more detail.
The [demos](../demos) cover special deployments in more detail.
### Example: Local File
@ -235,7 +235,7 @@ var XLSX = require("xlsx");
XLSX.writeFile(workbook, "out.xlsb");
```
Electron APIs have changed over time. The [`electron` demo](../getting-started/demos/desktop#electron)
Electron APIs have changed over time. The [`electron` demo](../demos/desktop#electron)
shows a complete example and details the required version-specific settings.
</TabItem>
@ -313,12 +313,12 @@ var thisFile = File.saveDialog("Select an output file", "*.xlsx;*.xls");
XLSX.writeFile(workbook, thisFile.absoluteURI);
```
The [`extendscript` demo](../getting-started/demos/extendscript) includes a more complex example.
The [`extendscript` demo](../demos/extendscript) includes a more complex example.
</TabItem>
<TabItem value="headless" label="Headless">
The [`headless` demo](../getting-started/demos/headless) includes complete
The [`headless` demo](../demos/headless) includes complete
examples of converting HTML TABLE elements to XLSB workbooks using Puppeteer
and other headless automation tools.
@ -503,7 +503,7 @@ is to adjust the server process or Lambda function to accept Base64 strings.
:::
A complete example using XHR is [included in the XHR demo](../getting-started/demos/network), along
A complete example using XHR is [included in the XHR demo](../demos/network), along
with examples for fetch and wrapper libraries. This example assumes the server
can handle Base64-encoded files (see the demo for a basic nodejs server):
@ -658,7 +658,7 @@ simple VueJS 3 data table. It is featured in the
### Example: Data Loading
["Typed Arrays and ML"](../getting-started/demos/ml) covers strategies for
["Typed Arrays and ML"](../demos/ml) covers strategies for
generating typed arrays and tensors from worksheet data.
<details>

@ -1,5 +1,5 @@
{
"label": "Common Use Cases",
"collapsed": false,
"collapsed": true,
"position": 6
}

@ -1,4 +1,4 @@
{
"label": "CSF Object Model",
"label": "SheetJS Data Model",
"position": 7
}

@ -1,4 +1,4 @@
{
"label": "API Functions",
"label": "API Reference",
"position": 8
}

@ -1,8 +1,9 @@
---
sidebar_position: 5
title: API Reference
---
# Interface Summary
## Interface Summary
`XLSX` is the exposed variable in the browser and the exported node variable
@ -18,7 +19,7 @@ sidebar_position: 5
`XLSX.readFile(filename, read_opts)` attempts to read `filename` and parse.
Parse options are described in the [Parsing Options](./api/parse-options) section.
Parse options are described in the [Parsing Options](./parse-options) section.
## Writing functions
@ -34,13 +35,13 @@ In browser-based environments, it will attempt to force a client-side download.
`XLSX.writeFileAsync(filename, wb, o, cb)` attempts to write `wb` to `filename`.
If `o` is omitted, the writer will use the third argument as the callback.
Write options are described in the [Writing Options](./api/write-options) section.
Write options are described in the [Writing Options](./write-options) section.
## Utilities
Utilities are available in the `XLSX.utils` object.
The following are described in [A1 Utilities](./csf/general#a1-utilities)
The following are described in [A1 Utilities](../csf/general#a1-utilities)
**Cell and cell address manipulation:**
@ -49,7 +50,7 @@ The following are described in [A1 Utilities](./csf/general#a1-utilities)
- `encode_cell / decode_cell` converts cell addresses.
- `encode_range / decode_range` converts cell ranges.
The following are described in the [Utility Functions](./api/utilities):
The following are described in the [Utility Functions](./utilities):
**Constructing:**

@ -1,6 +1,7 @@
---
sidebar_position: 1
hide_table_of_contents: true
title: Overview
---
# SheetJS CE

@ -98,7 +98,7 @@ const config = {
},
{
label: 'Example',
to: '/docs/example',
to: '/docs/getting-started/example',
},
],
},

@ -36,7 +36,7 @@ const FeatureList = [
<div className={styles.buttons}>
<Link
className="button button--secondary button--lg"
to="/docs/example">
to="/docs/getting-started/example">
Complete Example
</Link>
</div>
@ -55,7 +55,7 @@ const FeatureList = [
<div className={styles.buttons}>
<Link
className="button button--secondary button--lg"
to="/docs/getting-started/demos/">
to="/docs/demos/">
Demo Projects
</Link>
</div>

@ -17,7 +17,7 @@
The core library can be used as-is in KnockoutJS applications.
The <a href="https://docs.sheetjs.com">Community Edition README</a> details some common use cases.
We also have some <a href="https://docs.sheetjs.com/docs/getting-started/demos/">more public demos</a>
We also have some <a href="https://docs.sheetjs.com/docs/demos/">more public demos</a>
This demo shows:
- view model backed by an array of arrays

BIN
docz/static/nuxt/nuxl6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
docz/static/nuxt/nuxt5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
docz/static/nuxt/nuxt6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB