spellcheck
This commit is contained in:
parent
4c92216ebe
commit
eb096bf09c
177
.spelling
177
.spelling
@ -1,4 +1,4 @@
|
||||
# xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com
|
||||
# SheetJS (C) 2013-present SheetJS -- http://sheetjs.com
|
||||
SheetJS
|
||||
sheetjs
|
||||
docs.sheetjs.com
|
||||
@ -10,18 +10,19 @@ DocCardList
|
||||
# Excel-related terms
|
||||
A1-Style
|
||||
AutoFilter
|
||||
BIFF12
|
||||
BIFF2
|
||||
BIFF3
|
||||
BIFF4
|
||||
BIFF5
|
||||
BIFF8
|
||||
BIFF12
|
||||
CFB
|
||||
CSV
|
||||
Chartsheet
|
||||
Chartsheets
|
||||
DBF
|
||||
DIF
|
||||
DSV
|
||||
Dialogsheet
|
||||
Dialogsheets
|
||||
ECMA-376
|
||||
@ -51,6 +52,7 @@ SYLK
|
||||
SpreadsheetML
|
||||
TSV
|
||||
TXT
|
||||
Tooltips
|
||||
UOS
|
||||
UOS1
|
||||
UOS2
|
||||
@ -76,10 +78,10 @@ WQ3
|
||||
XLML
|
||||
XLR
|
||||
XLS
|
||||
XLW
|
||||
XLSB
|
||||
XLSM
|
||||
XLSX
|
||||
XLW
|
||||
chartsheet
|
||||
chartsheets
|
||||
dBASE
|
||||
@ -103,85 +105,155 @@ tooltips
|
||||
9.x
|
||||
APIs
|
||||
ActiveX
|
||||
AngularJS
|
||||
ArrayBuffer
|
||||
Auth
|
||||
BOM
|
||||
Base64
|
||||
Base64-encoded
|
||||
Booleans
|
||||
Browserify
|
||||
Bundlers
|
||||
CDN
|
||||
CEP
|
||||
CLI
|
||||
CMS
|
||||
CORS
|
||||
CRX
|
||||
CS6
|
||||
CapacitorJS
|
||||
Chakra
|
||||
ChakraCore
|
||||
CommonJS
|
||||
Cordova
|
||||
DOM
|
||||
DPI
|
||||
DataGrid
|
||||
Deno
|
||||
Downloadify
|
||||
Drash
|
||||
Duktape
|
||||
ES3
|
||||
ES5
|
||||
ES6
|
||||
ESM
|
||||
ETH
|
||||
Ethercalc
|
||||
ExpressJS
|
||||
ExtendScript
|
||||
Fastify
|
||||
FileReader
|
||||
GatsbyJS
|
||||
Goja
|
||||
HTML
|
||||
HTML5
|
||||
HTTP
|
||||
HTTPS
|
||||
IE
|
||||
IE8
|
||||
IE10
|
||||
IE11
|
||||
IE6
|
||||
IE8
|
||||
IE9
|
||||
InDesign
|
||||
IndexedDB
|
||||
Integrations
|
||||
JDK
|
||||
JS
|
||||
JSX
|
||||
JavaScriptCore
|
||||
JerryScript
|
||||
Knex
|
||||
KnockoutJS
|
||||
LLC
|
||||
LWC
|
||||
Lifecycle
|
||||
LocalStorage
|
||||
LowDB
|
||||
Lume
|
||||
MVC
|
||||
MVVM
|
||||
MacOS
|
||||
MariaDB
|
||||
Meridiem
|
||||
MongoDB
|
||||
MySQL
|
||||
NPM
|
||||
NW.js
|
||||
Nashorn
|
||||
NativeScript
|
||||
NestJS
|
||||
NetSuite
|
||||
NextJS
|
||||
NoSQL
|
||||
NodeJS
|
||||
Northwind
|
||||
Nunjucks
|
||||
Nuxt
|
||||
NuxtJS
|
||||
PPI
|
||||
PhantomJS
|
||||
Photoshop
|
||||
PostgreSQL
|
||||
PowerShell
|
||||
Preact
|
||||
QuickJS
|
||||
R1
|
||||
R2
|
||||
R5
|
||||
R9
|
||||
RDBMS
|
||||
README
|
||||
RESTlets
|
||||
ReactJS
|
||||
Redis
|
||||
RequireJS
|
||||
Roadmap
|
||||
Rollup
|
||||
S3
|
||||
SDK
|
||||
SQLite
|
||||
SSL
|
||||
SWC
|
||||
SWF
|
||||
Schemas
|
||||
Serverless
|
||||
SessionStorage
|
||||
SlimerJS
|
||||
Snowpack
|
||||
SuiteScript
|
||||
SuiteScripts
|
||||
Suitelets
|
||||
SystemJS
|
||||
Tauri
|
||||
TensorFlow
|
||||
UI
|
||||
UI5
|
||||
URI
|
||||
UTF-16
|
||||
UTF-8
|
||||
UXP
|
||||
V2
|
||||
V8
|
||||
VBScript
|
||||
VSCodium
|
||||
Vendoring
|
||||
Vite
|
||||
ViteJS
|
||||
VueJS
|
||||
VueJS-friendly
|
||||
WMR
|
||||
WSL
|
||||
WebAssembly
|
||||
WebGL
|
||||
WebKit
|
||||
WebSQL
|
||||
Webpack
|
||||
XHR
|
||||
XMLHttpRequest
|
||||
XP
|
||||
Xcode
|
||||
angular-cli
|
||||
async
|
||||
axios
|
||||
bundler
|
||||
@ -196,8 +268,10 @@ dataset
|
||||
deduplication
|
||||
destructuring
|
||||
disambiguate
|
||||
disambiguated
|
||||
embeddable
|
||||
encodings
|
||||
esbuild
|
||||
filesystem
|
||||
globals
|
||||
iOS
|
||||
@ -205,9 +279,12 @@ iWork
|
||||
javascript
|
||||
lifecycle
|
||||
metadata
|
||||
microcontrollers
|
||||
middleware
|
||||
minified
|
||||
minifier
|
||||
namespace
|
||||
natively
|
||||
node.js
|
||||
nodejs
|
||||
npm
|
||||
parsers
|
||||
@ -216,78 +293,32 @@ pre-generated
|
||||
prepend
|
||||
prepended
|
||||
programmatically
|
||||
renderer
|
||||
repo
|
||||
runtime
|
||||
serverless
|
||||
subfolder
|
||||
submodule
|
||||
transpiled
|
||||
uncheck
|
||||
unpkg
|
||||
utils
|
||||
vendoring
|
||||
webpack
|
||||
weex
|
||||
|
||||
- demos/altjs/README.md
|
||||
ChakraCore
|
||||
Duktape
|
||||
Goja
|
||||
Nashorn
|
||||
QuickJS
|
||||
|
||||
- demos/angular/README.md
|
||||
AngularJS
|
||||
|
||||
- demos/angular2/README.md
|
||||
NativeScript
|
||||
angular-cli
|
||||
|
||||
- demos/array/README.md
|
||||
WebGL
|
||||
WebAssembly
|
||||
dataset
|
||||
TensorFlow
|
||||
|
||||
- demos/database/README.md
|
||||
Knex
|
||||
LowDB
|
||||
MariaDB
|
||||
MongoDB
|
||||
MySQL
|
||||
PostgreSQL
|
||||
schemaless
|
||||
schemas
|
||||
serverless
|
||||
sideloaded
|
||||
storages
|
||||
|
||||
- demos/extendscript/README.md
|
||||
Photoshop
|
||||
InDesign
|
||||
minifier
|
||||
|
||||
- demos/function/README.md
|
||||
microservice
|
||||
|
||||
- demos/headless/README.md
|
||||
PhantomJS
|
||||
SlimerJS
|
||||
subfolder
|
||||
submodule
|
||||
superagent
|
||||
transpile
|
||||
transpiled
|
||||
transpiling
|
||||
uncheck
|
||||
unidimensional
|
||||
unminified
|
||||
unpkg
|
||||
utils
|
||||
v4
|
||||
vendoring
|
||||
vscode-data-preview
|
||||
webpack
|
||||
weex
|
||||
wkhtmltopdf
|
||||
|
||||
- demos/nwjs/README.md
|
||||
NW.js
|
||||
|
||||
- demos/react/README.md
|
||||
Next.js
|
||||
Preact
|
||||
|
||||
- demos/server/README.md
|
||||
hapi
|
||||
|
||||
- demos/showcase/README.md
|
||||
vscode-data-preview
|
||||
|
||||
- demos/xhr/README.md
|
||||
axios
|
||||
superagent
|
||||
|
||||
|
||||
# frontmatter noise
|
||||
api
|
||||
csf
|
||||
|
2
Makefile
2
Makefile
@ -12,7 +12,7 @@ serve:
|
||||
|
||||
.PHONY: spell
|
||||
spell:
|
||||
npx spellchecker-cli -d .spelling -f 'docz/**/*.md*' --no-suggestions
|
||||
npx spellchecker-cli -q -d .spelling -f 'docz/**/*.md*' --no-suggestions
|
||||
|
||||
.PHONY: index
|
||||
index: readme ## Rebuild site
|
||||
|
@ -28,8 +28,8 @@ The `latest` tag references the latest version and updates with each release:
|
||||
|
||||
:::warning
|
||||
|
||||
A number of CDNs host older versions of the SheetJS libraries. Due to syncing
|
||||
issues, they are generally out of date.
|
||||
A number of services host older versions of the SheetJS libraries. Due to
|
||||
syncing issues, they are generally out of date.
|
||||
|
||||
They are known CDN bugs.
|
||||
|
||||
@ -105,7 +105,7 @@ importScripts("https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.mi
|
||||
:::caution
|
||||
|
||||
This section refers to imports using `script type="module"`. For imports in
|
||||
modern projects using Webpack or React or Angular or Vue, the installation is
|
||||
modern projects using Webpack or React or Angular or VueJS, the installation is
|
||||
described [in the next section](./frameworks).
|
||||
|
||||
:::
|
||||
|
@ -111,7 +111,7 @@ The package will be installed and accessible as `xlsx`.
|
||||
#### CommonJS `require`
|
||||
|
||||
By default, the module supports `require` and it will automatically add support
|
||||
for streams and filesystem access:
|
||||
for streams and file system access:
|
||||
|
||||
```js
|
||||
var XLSX = require("xlsx");
|
||||
|
@ -25,8 +25,12 @@ This demo was built on a "Developer Edition" account. At the time of writing, an
|
||||
|
||||
### Create Sample Project and Component
|
||||
|
||||
<!-- spellchecker-disable -->
|
||||
|
||||
Following the steps in ["Develop in Non-Scratch Orgs"](https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.get_started_sfdx_deploy):
|
||||
|
||||
<!-- spellchecker-enable -->
|
||||
|
||||
```bash
|
||||
## Login
|
||||
sfdx force:auth:web:login -d -a LWC-Hub
|
||||
@ -101,7 +105,7 @@ Click "Save" to activate the page, then click the left arrow to return to Setup.
|
||||
Click the App Launcher and select "Bolt Solutions" then "SheetJS Demo". You
|
||||
should see a page like
|
||||
|
||||
![SheetForce Demo](pathname:///files/sfinitial.png)
|
||||
![Demo](pathname:///files/sfinitial.png)
|
||||
|
||||
|
||||
## Adding the Standalone Script
|
||||
|
@ -17,7 +17,7 @@ support. Over the years there have been a few different JavaScript platforms:
|
||||
|
||||
- "UXP": This is the current Adobe recommendation for new CC extensions.
|
||||
|
||||
This demo intends to cover the SheetJS-related parts. General setup as well as
|
||||
This demo intends to cover parts relevant to SheetJS. General setup as well as
|
||||
general Adobe considerations are not covered here. A basic familiarity with
|
||||
extension development is assumed.
|
||||
|
||||
@ -122,8 +122,8 @@ XLSX.writeFile(workbook, thisFile.absoluteURI);
|
||||
<details open><summary><b>Complete Example</b> (click to hide)</summary>
|
||||
|
||||
In this example, the script will show a dialog to select an output file. Once
|
||||
selected, the library will create a new workbook with one worksheet. Cell A1
|
||||
will be "Author" and cell B1 will be the active Photoshop document Author.
|
||||
selected, the library will create a new workbook with one worksheet. Cell `A1`
|
||||
will be "Author" and cell `B1` will be the active Photoshop document Author.
|
||||
The PS author is available as `activeDocument.info.author`.
|
||||
|
||||
This demo was verified in Photoshop CS6 64-bit on Windows 10.
|
||||
|
@ -231,7 +231,7 @@ documents, and other simple data files. They enable workflows where the library
|
||||
generates CSV data for the database to process or where the library parses CSV
|
||||
files created by the database.
|
||||
|
||||
#### Worksheets to CSVs
|
||||
#### Worksheet to CSV
|
||||
|
||||
CSV data can be generated from worksheets using `XLSX.utils.sheet_to_csv`.
|
||||
|
||||
@ -243,7 +243,7 @@ const csv = XLSX.utils.sheet_to_json(ws);
|
||||
const csv_arr = wb.SheetNames.map(n => XLSX.utils.sheet_to_json(wb.Sheets[n]));
|
||||
```
|
||||
|
||||
#### CSVs to Worksheets
|
||||
#### CSV to Worksheet
|
||||
|
||||
`XLSX.read` can read strings with CSV data. It will generate single-sheet
|
||||
workbooks with worksheet name `Sheet1`.
|
||||
@ -432,11 +432,11 @@ db.readTransaction(tx =>
|
||||
);
|
||||
```
|
||||
|
||||
The following demo generates a database with hardcoded SQL statements. Queries
|
||||
The following demo generates a database with 5 fixed SQL statements. Queries
|
||||
can be changed in the Live Editor. The WebSQL database can be inspected in the
|
||||
"WebSQL" section of the "Application" Tab of Developer Tools:
|
||||
|
||||
![WebSQL DevTools](pathname:///files/websql.png)
|
||||
![WebSQL view in Developer Tools](pathname:///files/websql.png)
|
||||
|
||||
```jsx live
|
||||
function SheetQL() {
|
||||
@ -735,14 +735,6 @@ async function generate_sql(knex, ws, wsname) {
|
||||
|
||||
### MongoDB Structured Collections
|
||||
|
||||
:::warning MongoDB Relicense
|
||||
|
||||
This demo was originally written when MongoDB was licensed under AGPLv3. It was
|
||||
relicensed in 2018 to the Server-Side Public License. This demo was tested with
|
||||
the "MongoDB Community Server" and may not work with the "Enterprise" Server.
|
||||
|
||||
:::
|
||||
|
||||
MongoDB is a popular document-oriented database engine.
|
||||
|
||||
It is straightforward to treat collections as worksheets. Each object maps to
|
||||
@ -782,7 +774,7 @@ It was verified in Node 16.16.0.
|
||||
npm i --save https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz mongodb
|
||||
```
|
||||
|
||||
2) Start a MongoDB server on localhost (follow official instructions)
|
||||
2) Start a MongoDB server on `localhost` (follow official instructions)
|
||||
|
||||
3) Save the following to `SheetJSMongoCRUD.mjs` (the key step is highlighted):
|
||||
|
||||
|
@ -71,11 +71,11 @@ var workbook = XLSX.read(f.getContents(), {type: "base64"});
|
||||
`N/file` provides [`file.create`](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_4223861820.html)
|
||||
and `file.load` for creating and loading files respectively.
|
||||
|
||||
Binary content must be base64-encoded. Fortunately, `XLSX.write` with `base64`
|
||||
Binary content must be Base64-encoded. Fortunately, `XLSX.write` with `base64`
|
||||
type will generate compatible Base64 strings:
|
||||
|
||||
```js
|
||||
/* write XLSX workbook as base64 string */
|
||||
/* write XLSX workbook as Base64 string */
|
||||
var out = XLSX.write(workbook, { bookType: "xlsx", type: "base64" });
|
||||
/* create file */
|
||||
var newfile = file.create({
|
||||
|
@ -131,7 +131,7 @@ This can be converted to a SheetJS worksheet using `XLSX.utils.aoa_to_sheet`:
|
||||
|
||||
### Generating an XLSB file
|
||||
|
||||
`XLSX.writeFile` will write a file in the filesystem:
|
||||
`XLSX.writeFile` will write a file in the file system:
|
||||
|
||||
```js
|
||||
/* write to SheetJS.xlsb */
|
||||
@ -235,7 +235,7 @@ includes detailed instructions for running locally.
|
||||
|
||||
### Reading the Workbook File
|
||||
|
||||
`XLSX.readFile` can read files from the filesystem. The following line reads
|
||||
`XLSX.readFile` can read files from the file system. The following line reads
|
||||
`sheetjs.xlsx` from the current directory:
|
||||
|
||||
```js
|
||||
|
@ -2,6 +2,9 @@
|
||||
sidebar_position: 7
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Headless Automation
|
||||
|
||||
Headless automation involves controlling "headless browsers" to access websites
|
||||
@ -18,9 +21,9 @@ back to the automation script.
|
||||
This demo focuses on exporting table data to a workbook. Headless browsers do
|
||||
not generally support passing objects between the browser context and the
|
||||
automation script, so the file data must be generated in the browser context
|
||||
and sent back to the automation script for saving in the filesystem. Steps:
|
||||
and sent back to the automation script for saving in the file system. Steps:
|
||||
|
||||
1) Launch the headless browser and load the target webpage.
|
||||
1) Launch the headless browser and load the target site.
|
||||
|
||||
2) Add the standalone SheetJS build to the page in a `SCRIPT` tag.
|
||||
|
||||
@ -37,7 +40,7 @@ This demo exports data from <https://sheetjs.com/demos/table>.
|
||||
:::note
|
||||
|
||||
It is also possible to parse files from the browser context, but parsing from
|
||||
the automation context is more performant and strongly recommended.
|
||||
the automation context is more efficient and strongly recommended.
|
||||
|
||||
:::
|
||||
|
||||
@ -50,6 +53,9 @@ an installer script. Installation is straightforward:
|
||||
npm i https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz puppeteer
|
||||
```
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="nodejs" label="NodeJS">
|
||||
|
||||
Binary strings are the favored data type. They can be safely passed from the
|
||||
browser context to the automation script. NodeJS provides an API to write
|
||||
binary strings to file (`fs.writeFileSync` using encoding `binary`).
|
||||
@ -94,6 +100,71 @@ const puppeteer = require('puppeteer');
|
||||
})();
|
||||
```
|
||||
|
||||
This script will generate `SheetJSPuppeteer.xlsb` which can be opened in Excel.
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="deno" label="Deno">
|
||||
|
||||
:::caution
|
||||
|
||||
Deno Puppeteer is a fork. It is not officially supported by the Puppeteer team.
|
||||
|
||||
:::
|
||||
|
||||
Installation is straightforward:
|
||||
|
||||
```bash
|
||||
env PUPPETEER_PRODUCT=chrome deno run -A --unstable https://deno.land/x/puppeteer@14.1.1/install.ts
|
||||
```
|
||||
|
||||
Base64 strings are the favored data type. They can be safely passed from the
|
||||
browser context to the automation script. Deno can decode the Base64 strings
|
||||
and write the decoded `Uint8Array` data to file with `Deno.writeFileSync`
|
||||
|
||||
To run the example, after installing the packages, save the following script to
|
||||
`SheetJSPuppeteer.ts` and run `deno run -A --unstable SheetJSPuppeteer.js`.
|
||||
|
||||
```js title="SheetJSPuppeteer.ts"
|
||||
import puppeteer from "https://deno.land/x/puppeteer@14.1.1/mod.ts";
|
||||
import { decode } from "https://deno.land/std/encoding/base64.ts"
|
||||
|
||||
/* (1) Load the target page */
|
||||
const browser = await puppeteer.launch();
|
||||
const page = await browser.newPage();
|
||||
page.on("console", msg => console.log("PAGE LOG:", msg.text()));
|
||||
await page.setViewport({width: 1920, height: 1080});
|
||||
await page.goto('https://sheetjs.com/demos/table');
|
||||
|
||||
/* (2) Load the standalone SheetJS build from the CDN */
|
||||
await page.addScriptTag({ url: 'https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js' });
|
||||
|
||||
/* (3) Run the snippet in browser and return data */
|
||||
const b64 = await page.evaluate(() => {
|
||||
/* NOTE: this function will be evaluated in the browser context.
|
||||
`page`, `fs` and `puppeteer` are not available.
|
||||
`XLSX` will be available thanks to step 2 */
|
||||
|
||||
/* find first table */
|
||||
var table = document.body.getElementsByTagName('table')[0];
|
||||
|
||||
/* call table_to_book on first table */
|
||||
var wb = XLSX.utils.table_to_book(table);
|
||||
|
||||
/* generate XLSB and return binary string */
|
||||
return XLSX.write(wb, {type: "base64", bookType: "xlsb"});
|
||||
});
|
||||
/* (4) write data to file */
|
||||
Deno.writeFileSync("SheetJSPuppeteer.xlsb", decode(b64));
|
||||
|
||||
await browser.close();
|
||||
```
|
||||
|
||||
This script will generate `SheetJSPuppeteer.xlsb` which can be opened in Excel.
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
|
||||
## Playwright
|
||||
|
||||
Playwright presents a unified scripting framework for Chromium, WebKit, and
|
||||
|
@ -8,8 +8,8 @@ title: Typed Arrays and ML
|
||||
</head>
|
||||
|
||||
Machine learning libraries in JS typically use "Typed Arrays". Typed Arrays are
|
||||
not JS Arrays! SheetJS expects bona fide JS Arrays. With some data wrangling,
|
||||
translating between SheetJS worksheets and typed arrays is straightforward.
|
||||
not JS Arrays! With some data wrangling, translating between SheetJS worksheets
|
||||
and typed arrays is straightforward.
|
||||
|
||||
This demo covers conversions between worksheets and Typed Arrays for use with
|
||||
[TensorFlow.js](https://js.tensorflow.org/js/) and other ML libraries.
|
||||
@ -43,7 +43,7 @@ function worksheet_to_csv_url(worksheet) {
|
||||
}
|
||||
```
|
||||
|
||||
[This demo mirrors TFjs docs](https://js.tensorflow.org/api/latest/#data.csv),
|
||||
[This demo mirrors `TFjs` docs](https://js.tensorflow.org/api/latest/#data.csv),
|
||||
fetching [an XLSX export of the example dataset](https://sheetjs.com/data/bht.xlsx).
|
||||
|
||||
<details><summary><b>TF CSV Demo using XLSX files</b> (click to show)</summary>
|
||||
@ -193,7 +193,7 @@ var sepal_lengths = [5.1, 4.9, ...];
|
||||
var sepal_widths = [3.5, 3, ...];
|
||||
```
|
||||
|
||||
When a 2D tensor can be exported, it will look different from the spreadsheet:
|
||||
When a `tensor2d` can be exported, it will look different from the spreadsheet:
|
||||
|
||||
```js
|
||||
var data_set_2d = [
|
||||
@ -292,7 +292,7 @@ var col1 = tensor.slice([0,0], [1,tensor.shape[1]]).flatten();
|
||||
var col2 = tensor.slice([1,0], [1,tensor.shape[1]]).flatten();
|
||||
```
|
||||
|
||||
For exporting, `stack` can be used to linearize the columns:
|
||||
For exporting, `stack` can be used to collapse the columns into a linear array:
|
||||
|
||||
```js
|
||||
/* pull data into a Float32Array */
|
||||
|
@ -169,9 +169,9 @@ bun bun.js
|
||||
</details>
|
||||
|
||||
|
||||
## ESBuild
|
||||
## esbuild
|
||||
|
||||
The `xlsx.mjs` source file are written in a subset of ES6 that ESBuild
|
||||
The `xlsx.mjs` source file are written in a subset of ES6 that `esbuild`
|
||||
understands and is able to transpile down for older browsers.
|
||||
|
||||
Both the `node` and `browser` platforms work out of the box.
|
||||
@ -339,7 +339,7 @@ node esb.node.js
|
||||
|
||||
## Parcel
|
||||
|
||||
Parcel Bundler should play nice with SheetJS out of the box.
|
||||
Parcel should play nice with SheetJS out of the box.
|
||||
|
||||
:::warning Parcel Bug
|
||||
|
||||
@ -846,7 +846,7 @@ While SystemJS works in NodeJS, the built-in `require` should be preferred.
|
||||
|
||||
:::
|
||||
|
||||
The NodeJS module entrypoint is `xlsx/xlsx.js` and should be mapped:
|
||||
The NodeJS module main script is `xlsx/xlsx.js` and should be mapped:
|
||||
|
||||
```js
|
||||
SystemJS.config({
|
||||
|
@ -65,7 +65,7 @@ npm run build
|
||||
npm start
|
||||
```
|
||||
|
||||
If you have [VSCodium](https://vscodium.com/) installed, the folder can be opened with
|
||||
If [VSCodium](https://vscodium.com/) is installed, the folder can be opened:
|
||||
|
||||
```powershell
|
||||
codium .
|
||||
@ -111,8 +111,8 @@ The `manifest.xml` should also be updated to reflect the function namespace:
|
||||
After making the change, save the files. Close the terminal window and the
|
||||
Excel window (do not save the Excel file). Re-run `npm start`.
|
||||
|
||||
In the new Excel window, enter the formula `=SHEETJS.VERSION()` in cell E1. You
|
||||
should see something similar to the following screenshot:
|
||||
In the new Excel window, enter the formula `=SHEETJS.VERSION()` in cell `E1`.
|
||||
You should see something similar to the following screenshot:
|
||||
|
||||
![`SHEETJS.VERSION` output](pathname:///files/xlcfversion.png)
|
||||
|
||||
@ -201,7 +201,7 @@ var aoa = XLSX.utils.sheet_to_json(ws, {header: 1}); // get data as array of arr
|
||||
|
||||
To demonstrate the parsing ability, a Base64-encoded version of the file will
|
||||
be used. This file contains no binary characters and should "just work". Once
|
||||
the aforementioned Excel bug is fixed, the non-Base64 version can be used.
|
||||
the aforementioned Excel bug is fixed, the raw binary files can be used.
|
||||
|
||||
This new function should be added to `src\functions\functions.js`:
|
||||
|
||||
@ -239,8 +239,8 @@ async function extern() {
|
||||
After making the change, save the files. Close the terminal window and the
|
||||
Excel window (do not save the Excel file). Re-run `npm start`.
|
||||
|
||||
Enter the formula `=SHEETJS.EXTERN()` in cell D1 and press Enter. Excel should
|
||||
pull in the data and generate a dynamic array:
|
||||
Enter the formula `=SHEETJS.EXTERN()` in cell `D1` and press Enter. Excel
|
||||
should pull in the data and generate a dynamic array:
|
||||
|
||||
![`SHEETJS.VERSION` output](pathname:///files/xlcfextern1.png)
|
||||
|
||||
|
@ -67,7 +67,7 @@ demo pages should be downloaded and hosted using a simple HTTP server.
|
||||
:::
|
||||
|
||||
<http://oss.sheetjs.com/sheetjs/ajax.html> uses XMLHttpRequest to download test
|
||||
files and convert to CSV.
|
||||
files and convert to CSV
|
||||
|
||||
<https://oss.sheetjs.com/sheetjs/> demonstrates reading files with `FileReader`.
|
||||
|
||||
@ -108,11 +108,11 @@ input_dom_element.addEventListener('change', handle_fr, false);
|
||||
|
||||
`Blob#arrayBuffer` is not supported in IE!
|
||||
|
||||
**ActiveX-based Upload**
|
||||
**ActiveX Upload**
|
||||
|
||||
Through the `Scripting.FileSystemObject` object model, a script in the VBScript
|
||||
scripting language can read from an arbitrary path on the filesystem. The shim
|
||||
includes a special `IE_LoadFile` function to read binary strings from file. This
|
||||
scripting language can read from an arbitrary path on the file system. The shim
|
||||
includes a special `IE_LoadFile` function to read binary data from files. This
|
||||
should be called from a file input `onchange` event:
|
||||
|
||||
```js
|
||||
@ -136,7 +136,7 @@ approach is embedded in `XLSX.writeFile` and no additional shims are necessary.
|
||||
|
||||
**Flash-based Download**
|
||||
|
||||
It is possible to write to the file system using a SWF. `Downloadify` library
|
||||
It is possible to write to the file system using a SWF file. `Downloadify`
|
||||
implements one solution. Since a genuine click is required, there is no way to
|
||||
force a download. The safest data type is Base64:
|
||||
|
||||
@ -159,7 +159,7 @@ Downloadify.create(element_id, {
|
||||
});
|
||||
```
|
||||
|
||||
**ActiveX-based Download**
|
||||
**ActiveX Download**
|
||||
|
||||
Through the `Scripting.FileSystemObject` object model, a script in the VBScript
|
||||
scripting language can write to an arbitrary path on the filesystem. The shim
|
||||
|
@ -7,8 +7,8 @@ import current from '/version.js';
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
With the availability of JS engines and the success of server-side runtimes, it
|
||||
is natural to want command-line tools for various workflows.
|
||||
With the availability of JS engines and the success of server-side platforms,
|
||||
it is feasible to build command-line tools for various workflows.
|
||||
|
||||
This demo covers a number of strategies for building standalone processors. The
|
||||
goal is to generate CSV output from an arbitrary spreadsheet file.
|
||||
@ -63,7 +63,7 @@ deno compile -r --allow-read sheet2csv.ts
|
||||
|
||||
## NodeJS
|
||||
|
||||
There are a few popular tools for compiling NodeJS scripts to executables.
|
||||
There are a few popular tools for compiling NodeJS scripts to CLI programs.
|
||||
|
||||
The demo script presents a friendly command line interface including flags:
|
||||
|
||||
|
@ -24,7 +24,7 @@ import and export data.
|
||||
|
||||
The `sheet_to_json` utility function generates arrays of objects, which is
|
||||
suitable for a number of libraries. When more advanced shapes are needed,
|
||||
it is easier to munge the output of an array of arrays.
|
||||
it is easier to process an array of arrays.
|
||||
|
||||
|
||||
### x-spreadsheet
|
||||
@ -204,7 +204,7 @@ many additional features including massive data streaming, sorting and styling.
|
||||
### Tabulator
|
||||
|
||||
[Tabulator](http://tabulator.info/docs/5.3/download#xlsx) includes deep support
|
||||
through a special Export button. It handles the SheetJS-related operations.
|
||||
through a special Export button. It handles the SheetJS operations internally.
|
||||
|
||||
|
||||
### Angular UI Grid
|
||||
@ -223,7 +223,7 @@ The [AngularJS demo](./legacy#angularjs) covers more general strategies.
|
||||
<details><summary><b>Notes</b> (click to show)</summary>
|
||||
|
||||
The library does not provide any way to modify the import button, so the demo
|
||||
includes a simple directive for a HTML File Input control. It also includes a
|
||||
includes a simple directive for a File Input HTML element. It also includes a
|
||||
sample service for export which adds an item to the export menu.
|
||||
|
||||
The demo `SheetJSImportDirective` follows the prescription from the README for
|
||||
@ -276,7 +276,7 @@ export default function App() {
|
||||
```
|
||||
|
||||
The most generic data representation is an array of arrays. To sate the grid,
|
||||
the columns must be objects whose `key` property is the stringified number:
|
||||
columns must be objects whose `key` property is the index converted to string:
|
||||
|
||||
```ts
|
||||
import { WorkSheet, utils } from 'xlsx';
|
||||
@ -314,11 +314,15 @@ function rdg_to_ws(rows: Row[]): WorkSheet {
|
||||
}
|
||||
```
|
||||
|
||||
<!-- spellchecker-disable -->
|
||||
|
||||
#### RDG Demo
|
||||
|
||||
<!-- spellchecker-enable -->
|
||||
|
||||
<details><summary><b>Complete Example</b> (click to show)</summary>
|
||||
|
||||
1) Create a new TypeScript CRA app:
|
||||
1) Create a new TypeScript `create-react-app` app:
|
||||
|
||||
```bash
|
||||
npx create-react-app sheetjs-cra --template typescript
|
||||
@ -333,7 +337,7 @@ npm i -S https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz react-data-grid
|
||||
|
||||
3) Replace the contents of `src/App.tsx` with the following code. Note: a copy
|
||||
to clipboard button will show up if you move your mouse over the code. The
|
||||
notable SheetJS-specific code is highlighted below:
|
||||
notable SheetJS integration code is highlighted below:
|
||||
|
||||
```tsx title="src/App.tsx"
|
||||
import React, { useEffect, useState, ChangeEvent } from "react";
|
||||
@ -444,8 +448,8 @@ export default function App() {
|
||||
}
|
||||
```
|
||||
|
||||
4) run `npm start`. When you load the dev page in the browser, it will attempt
|
||||
to fetch <https://sheetjs.com/pres.numbers> and load the data.
|
||||
4) run `npm start`. When you load the page in the browser, it will attempt to
|
||||
fetch <https://sheetjs.com/pres.numbers> and load the data.
|
||||
|
||||
The following screenshot was taken from the demo:
|
||||
|
||||
@ -453,8 +457,12 @@ The following screenshot was taken from the demo:
|
||||
|
||||
</details>
|
||||
|
||||
<!-- spellchecker-disable -->
|
||||
|
||||
### vue3-table-lite
|
||||
|
||||
<!-- spellchecker-enable -->
|
||||
|
||||
:::note
|
||||
|
||||
This demo was tested against `vue3-table-lite 1.2.4`, VueJS `3.2.37`, ViteJS
|
||||
@ -462,14 +470,13 @@ This demo was tested against `vue3-table-lite 1.2.4`, VueJS `3.2.37`, ViteJS
|
||||
|
||||
:::
|
||||
|
||||
[`vue3-table-lite`](https://vue3-lite-table.vercel.app/) is a data grid built
|
||||
for Vue
|
||||
[`vue3-table-lite`](https://vue3-lite-table.vercel.app/) is a VueJS data grid.
|
||||
|
||||
[A complete example is included below.](#vte-demo)
|
||||
[A complete example is included below.](#vuejs-demo)
|
||||
|
||||
#### Rows and Columns Bindings
|
||||
|
||||
`vue3-table-lite` presents two bindable attributes: an array of column metadata
|
||||
`vue3-table-lite` presents two attribute bindings: an array of column metadata
|
||||
(`columns`) and an array of objects representing the displayed data (`rows`).
|
||||
Typically both are `ref` objects:
|
||||
|
||||
@ -493,7 +500,7 @@ const columns = ref<Column[]>([]);
|
||||
</template>
|
||||
```
|
||||
|
||||
These can be mutated through the `value` property in Vue lifecycle methods:
|
||||
These can be mutated through the `value` property in VueJS lifecycle methods:
|
||||
|
||||
```ts
|
||||
import { onMounted } from "vue";
|
||||
@ -504,7 +511,7 @@ onMounted(() => {
|
||||
```
|
||||
|
||||
The most generic data representation is an array of arrays. To sate the grid,
|
||||
the columns must be objects whose `field` property is the stringified number:
|
||||
columns must be objects whose `field` property is the index converted to string:
|
||||
|
||||
```js
|
||||
import { ref } from "vue";
|
||||
@ -548,11 +555,11 @@ function vte_to_ws(rows) {
|
||||
}
|
||||
```
|
||||
|
||||
#### VTE Demo
|
||||
#### VueJS Demo
|
||||
|
||||
<details><summary><b>Complete Example</b> (click to show)</summary>
|
||||
|
||||
1) Create a new ViteJS App using the Vue + TypeScript template:
|
||||
1) Create a new ViteJS App using the VueJS + TypeScript template:
|
||||
|
||||
```bash
|
||||
npm create vite@latest sheetjs-vue -- --template vue-ts
|
||||
@ -575,7 +582,7 @@ curl -LO https://docs.sheetjs.com/vtl/App.vue
|
||||
cd ..
|
||||
```
|
||||
|
||||
4) run `npm run dev`. When you load the dev page in the browser, it will try
|
||||
to fetch <https://sheetjs.com/pres.numbers> and load the data.
|
||||
4) run `npm run dev`. When you load the page in the browser, it will try to
|
||||
fetch <https://sheetjs.com/pres.numbers> and load the data.
|
||||
|
||||
</details>
|
||||
|
@ -15,7 +15,7 @@ This library is compatible with Chrome and Chromium extensions and should just
|
||||
work out of the box. Specific API support is listed in the Chrome extensions
|
||||
API documentation.
|
||||
|
||||
[Right-Click and download the final crx](pathname:///chromium/SheetJSDemo.crx)
|
||||
[Right-Click and download the final CRX](pathname:///chromium/SheetJSDemo.crx)
|
||||
|
||||
:::caution
|
||||
|
||||
|
@ -5,12 +5,12 @@ title: Desktop Applications
|
||||
|
||||
Web technologies like JavaScript and HTML have been adapted to the traditional
|
||||
app space. Typically these frameworks bundle a JavaScript engine as well as a
|
||||
windowing framework. SheetJS is compatible with many toolkits.
|
||||
windowing framework. SheetJS is compatible with many app frameworks.
|
||||
|
||||
## NW.js
|
||||
|
||||
The [Standalone scripts](../getting-started/installation/standalone) can be referenced in a
|
||||
`SCRIPT` tag from the entry point HTML page.
|
||||
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.
|
||||
|
||||
@ -151,7 +151,7 @@ The demo project is wired for `electron-forge` to build the standalone binary.
|
||||
1) Download the demo files:
|
||||
|
||||
- [`package.json`](pathname:///electron/package.json) : project structure
|
||||
- [`main.js`](pathname:///electron/main.js) : entrypoint
|
||||
- [`main.js`](pathname:///electron/main.js) : main process script
|
||||
- [`index.html`](pathname:///electron/index.html) : window page
|
||||
- [`index.js`](pathname:///electron/index.js) : script loaded in render context
|
||||
|
||||
@ -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 file system.
|
||||
`showSaveDialog` shows a Save As dialog and returns the selected file name:
|
||||
|
||||
```js
|
||||
@ -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 file system.
|
||||
`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:
|
||||
|
||||
@ -343,20 +343,20 @@ Electron 12.0.0 and later also require `worldSafeExecuteJavascript: true` and
|
||||
`contextIsolation: true`.
|
||||
|
||||
Electron 14+ must use `@electron/remote` instead of `remote`. An `initialize`
|
||||
call is required to enable DevTools in the window.
|
||||
call is required to enable Developer Tools in the window.
|
||||
|
||||
:::
|
||||
|
||||
## Tauri
|
||||
|
||||
The [NodeJS Module](../getting-started/installation/nodejs) can be imported
|
||||
from frontend code.
|
||||
from JavaScript code.
|
||||
|
||||
This demo was tested against Tauri 1.0.5 on 2022 August 13.
|
||||
|
||||
:::note
|
||||
|
||||
Tauri currently does not provide NodeJS-esque `fs` wrapper functions. The raw
|
||||
Tauri currently does not provide the equivalent of NodeJS `fs` module. The raw
|
||||
`@tauri-apps/api` methods used in the examples are not expected to change.
|
||||
|
||||
:::
|
||||
@ -396,7 +396,7 @@ When prompted:
|
||||
- Window Title: `SheetJS + Tauri`
|
||||
- UI recipe: `create-vite`
|
||||
- Add "@tauri-apps/api": `Y`
|
||||
- Vite template: `vue-ts`
|
||||
- ViteJS template: `vue-ts`
|
||||
|
||||
2) Enter the directory:
|
||||
|
||||
|
@ -8,12 +8,12 @@ import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
The most popular JavaScript engine is V8. Designed for embedding in software,
|
||||
it powers Chrome, NodeJS, UXP, Deno and many other platforms and runtimes.
|
||||
it powers Chrome, NodeJS, UXP, Deno and many other platforms.
|
||||
|
||||
There are many other runtimes with different design goals. Some are designed
|
||||
There are many other JS engines with different design goals. Some are designed
|
||||
for low-power or low-memory environments. Others aim for interoperability with
|
||||
specific programming languages or environments. Typically they support a
|
||||
superset of ES3 and are capable of running SheetJS code.
|
||||
specific programming languages or environments. Typically they support ES3 and
|
||||
are capable of running SheetJS code.
|
||||
|
||||
|
||||
## General Caveats
|
||||
@ -40,9 +40,9 @@ var console = { log: function(x) { print(x); } };
|
||||
|
||||
**Binary Data**
|
||||
|
||||
Some engines do not provide easy ways of marshalling binary data. For example,
|
||||
it is common to pass null-terminated arrays, which would truncate XLSX and XLS
|
||||
files. APIs that accept pointers without length should be avoided.
|
||||
Some engines do not provide easy ways to exchange binary data. For example, it
|
||||
is common to pass null-terminated arrays, which would truncate XLSX, XLS, and
|
||||
other exports. APIs that accept pointers without length should be avoided.
|
||||
|
||||
Base64 strings are safe for passing between JS and native code, but they should
|
||||
only be used when there is no safe way to pass `ArrayBuffer` or `Uint8Array`.
|
||||
@ -81,7 +81,7 @@ duk_pop(ctx);
|
||||
|
||||
:::note
|
||||
|
||||
This demo was tested on MacOS x64.
|
||||
This demo was tested on Intel Mac (`darwin-x64`).
|
||||
|
||||
:::
|
||||
|
||||
@ -256,7 +256,7 @@ wb, _ = vm.RunString("wb = XLSX.read(buf, {type:'buffer'});")
|
||||
`"base64"` strings can be decoded in Go:
|
||||
|
||||
```go
|
||||
/* write to base64 string */
|
||||
/* write to Base64 string */
|
||||
b64str, _ := vm.RunString("XLSX.write(wb, {type:'base64', bookType:'xlsx'})")
|
||||
|
||||
/* pull data back into Go and write to file */
|
||||
@ -430,7 +430,7 @@ cat global.js xlsx.full.min.js payload.js hermes.js > xlsx.hermes.js
|
||||
```
|
||||
|
||||
The final script defines `global` before loading the standalone library. Once
|
||||
ready, it will read the hardcoded test file and print the contents as CSV.
|
||||
ready, it will read the bundled test data and print the contents as CSV.
|
||||
|
||||
5) Run the script using the Hermes standalone binary:
|
||||
|
||||
@ -461,7 +461,7 @@ Binary strings can be passed back and forth using `String.Encoding.isoLatin1`.
|
||||
`String(contentsOf:encoding:)` reads from a path and returns an encoded string:
|
||||
|
||||
```swift
|
||||
/* read sheetjs.xls as base64 string */
|
||||
/* read sheetjs.xls as Base64 string */
|
||||
let file_path = shared_dir.appendingPathComponent("sheetjs.xls");
|
||||
let data: String! = try String(contentsOf: file_path, encoding: String.Encoding.isoLatin1);
|
||||
```
|
||||
@ -478,8 +478,8 @@ context.evaluateScript("var wb = XLSX.read(payload, {type:'binary'});");
|
||||
|
||||
**Writing data**
|
||||
|
||||
When writing to binary string in JSC, the result should be stored in a variable
|
||||
and stringified in Swift:
|
||||
When writing to binary string in JavaScriptCore, the result should be stored in
|
||||
a variable and converted to string in Swift:
|
||||
|
||||
```swift
|
||||
/* write to binary string */
|
||||
@ -618,7 +618,7 @@ cat global.js xlsx.full.min.js payload.js jerry.js > xlsx.jerry.js
|
||||
```
|
||||
|
||||
The final script defines `global` before loading the standalone library. Once
|
||||
ready, it will read the hardcoded test file and print the contents as CSV.
|
||||
ready, it will read the bundled test data and print the contents as CSV.
|
||||
|
||||
5) Run the script using the `jerry` standalone binary:
|
||||
|
||||
@ -834,7 +834,7 @@ cat global.js xlsx.full.min.js payload.js chakra.js > xlsx.chakra.js
|
||||
```
|
||||
|
||||
The final script defines `global` before loading the standalone library. Once
|
||||
ready, it will read the hardcoded test file and print the contents as CSV.
|
||||
ready, it will read the bundled test data and print the contents as CSV.
|
||||
|
||||
5) Run the script using the ChakraCore standalone binary:
|
||||
|
||||
|
@ -68,7 +68,7 @@ The following table lists tested file plugins. "OS" lists tested platforms
|
||||
("A" for Android and "I" for iOS). "Copy" indicates whether an explicit copy
|
||||
is needed (file picker copies to cache directory and file plugin reads cache).
|
||||
|
||||
| Filesystem Plugin | File Picker Plugin | OS | Copy |
|
||||
| File system Plugin | File Picker Plugin | OS | Copy |
|
||||
|:---------------------------|:-------------------------------|:----:|:-----|
|
||||
| `react-native-file-access` | `react-native-document-picker` | `AI` | |
|
||||
| `react-native-blob-util` | `react-native-document-picker` | `AI` | YES |
|
||||
@ -165,7 +165,7 @@ const wb = XLSX.read(new Uint8Array(res), {type:'buffer'});
|
||||
|
||||
:::caution
|
||||
|
||||
On iOS, URIs from `react-native-document-picker` must be massaged:
|
||||
On iOS, the URI from `react-native-document-picker` must be massaged:
|
||||
|
||||
```js
|
||||
import { pickSingle } from 'react-native-document-picker';
|
||||
@ -218,7 +218,7 @@ import * as XLSX from "xlsx";
|
||||
import { FileSystem } from "react-native-file-access";
|
||||
|
||||
const b64 = await FileSystem.readFile(path, "base64");
|
||||
/* b64 is a base64 string */
|
||||
/* b64 is a Base64 string */
|
||||
const workbook = XLSX.read(b64, {type: "base64"});
|
||||
```
|
||||
|
||||
@ -230,7 +230,7 @@ import { Dirs, FileSystem } from "react-native-file-access";
|
||||
const DDP = Dirs.DocumentDir + "/";
|
||||
|
||||
const b64 = XLSX.write(workbook, {type:'base64', bookType:"xlsx"});
|
||||
/* b64 is a base64 string */
|
||||
/* b64 is a Base64 string */
|
||||
await FileSystem.writeFile(DDP + "sheetjs.xlsx", b64, "base64");
|
||||
```
|
||||
|
||||
@ -270,7 +270,7 @@ await writeFile(DocumentDirectoryPath + "/sheetjs.xlsx", bstr, "ascii");
|
||||
|
||||
:::caution
|
||||
|
||||
Some Expo APIs return URIs that cannot be read with `expo-file-system`. This
|
||||
Some Expo APIs return URI that cannot be read with `expo-file-system`. This
|
||||
will manifest as an error:
|
||||
|
||||
> Unsupported scheme for location '...'
|
||||
@ -305,7 +305,7 @@ import * as XLSX from "xlsx";
|
||||
import * as FileSystem from 'expo-file-system';
|
||||
|
||||
const b64 = XLSX.write(workbook, {type:'base64', bookType:"xlsx"});
|
||||
/* b64 is a base64 string */
|
||||
/* b64 is a Base64 string */
|
||||
await FileSystem.writeAsStringAsync(FileSystem.documentDirectory + "sheetjs.xlsx", b64, { encoding: FileSystem.EncodingType.Base64 });
|
||||
```
|
||||
|
||||
@ -326,9 +326,9 @@ are not covered here.
|
||||
|
||||
This example tries to separate the library-specific functions.
|
||||
|
||||
0) **Follow the official React Native CLI Quickstart!**
|
||||
0) **Follow the official React Native CLI Guide!**
|
||||
|
||||
Quickstart URL: <http://reactnative.dev/docs/environment-setup>
|
||||
Development Environment Guide: <http://reactnative.dev/docs/environment-setup>
|
||||
|
||||
Follow the instructions for iOS and for Android. They will cover installation
|
||||
and system configuration. By the end, you should be able to run the sample app
|
||||
@ -587,7 +587,7 @@ pod install
|
||||
cd ..
|
||||
```
|
||||
|
||||
After doing this, the simulator must be stopped and the dev server must reload:
|
||||
Once refreshed, the development process must be restarted:
|
||||
|
||||
```bash
|
||||
npx react-native run-ios
|
||||
@ -625,7 +625,7 @@ find ~/Library/Developer/CoreSimulator -name sheetjsw.xlsx |
|
||||
while read x; do echo "$x"; npx xlsx-cli "$x"; done
|
||||
```
|
||||
|
||||
Once testing is complete, stop the simulator and the dev process.
|
||||
Once testing is complete, stop the simulator and the development process.
|
||||
|
||||
**Android Testing**
|
||||
|
||||
@ -674,7 +674,7 @@ on an iPhone SE 3rd generation.
|
||||
|
||||
:::warning Binary Data issues
|
||||
|
||||
NativeScript will not safely transmit binary or UTF8 strings. XLSB, NUMBERS,
|
||||
NativeScript will not safely transmit binary or UTF-8 strings. XLSB, NUMBERS,
|
||||
XLSX, XLS, ODS, SYLK, and DBF exports are known to be mangled.
|
||||
|
||||
[This is a known NativeScript bug](https://github.com/NativeScript/NativeScript/issues/9586)
|
||||
@ -731,7 +731,7 @@ await file.writeText(bstr, encoding.ISO_8859_1);
|
||||
### Demo
|
||||
|
||||
The demo builds off of the NativeScript + Angular example. Familiarity with
|
||||
with Angular and TypeScript is assumed.
|
||||
Angular and TypeScript is assumed.
|
||||
|
||||
<details><summary><b>Complete Example</b> (click to show)</summary>
|
||||
|
||||
@ -1088,7 +1088,7 @@ window.requestFileSystem(window.PERSISTENT, 0, function(fs) {
|
||||
|
||||
### Demo
|
||||
|
||||
The demo builds off of the Vite example. Familiarity with VueJS and TypeScript
|
||||
The demo draws from the ViteJS example. Familiarity with VueJS and TypeScript
|
||||
is assumed.
|
||||
|
||||
<details><summary><b>Complete Example</b> (click to show)</summary>
|
||||
@ -1107,6 +1107,8 @@ npm i -g @quasar/cli cordova
|
||||
npm init quasar
|
||||
```
|
||||
|
||||
<!-- spellchecker-disable -->
|
||||
|
||||
When prompted:
|
||||
|
||||
- "What would you like to build?": `App with Quasar CLI`
|
||||
@ -1125,6 +1127,8 @@ When prompted:
|
||||
|
||||
2) Install dependencies:
|
||||
|
||||
<!-- spellchecker-enable -->
|
||||
|
||||
```bash
|
||||
cd SheetJSQuasar
|
||||
npm i
|
||||
@ -1166,7 +1170,7 @@ Return to the project directory:
|
||||
cd ..
|
||||
```
|
||||
|
||||
4) Start the dev server:
|
||||
4) Start the development server:
|
||||
|
||||
```bash
|
||||
quasar dev -m ios
|
||||
@ -1174,7 +1178,8 @@ quasar dev -m ios
|
||||
|
||||
:::caution
|
||||
|
||||
If the app is blank, delete the app and close the simulator, then restart dev
|
||||
If the app is blank or not refreshing, delete the app and close the simulator,
|
||||
then restart the development process.
|
||||
|
||||
:::
|
||||
|
||||
@ -1228,7 +1233,7 @@ The app should now show two buttons at the bottom:
|
||||
:::caution
|
||||
|
||||
If the app is blank or not refreshing, delete the app and close the simulator,
|
||||
then restart the dev process.
|
||||
then restart the development process.
|
||||
|
||||
:::
|
||||
|
||||
@ -1372,7 +1377,7 @@ id,content
|
||||
|
||||
:::note
|
||||
|
||||
This demo was tested on an Intel Mac on 2022 August 18 with Cordova backend.
|
||||
This demo was tested on an Intel Mac on 2022 August 18 with Cordova.
|
||||
The file integration uses `@ionic-native/file` version `5.36.0`.
|
||||
|
||||
The iOS simulator runs iOS 15.5 on an iPod Touch 7th Gen.
|
||||
|
@ -5,7 +5,7 @@ title: VueJS
|
||||
|
||||
[VueJS](https://vuejs.org/) is a JS library for building user interfaces.
|
||||
|
||||
This demo tries to cover common Vue data flow ideas and strategies. Single-File
|
||||
This demo covers common VueJS data flow ideas and strategies. Single-File
|
||||
Components (SFC) and VueJS familiarity is assumed.
|
||||
|
||||
Other demos cover general VueJS deployments, including:
|
||||
@ -163,8 +163,8 @@ generate column headings and for indexing into the row objects.
|
||||
The safest approach is to use an array of arrays for state and to generate
|
||||
column objects that map to A1-Style column headers.
|
||||
|
||||
The [Vue Table Lite demo](./grid#rows-and-columns-bindings) uses this approach
|
||||
with the following column and row structure:
|
||||
The [`vue3-table-lite` demo](./grid#rows-and-columns-bindings) generates rows
|
||||
and columns objects with the following structure:
|
||||
|
||||
```js
|
||||
/* rows are generated with a simple array of arrays */
|
||||
|
@ -20,9 +20,9 @@ Other demos cover general Angular deployments, including:
|
||||
|
||||
:::warning
|
||||
|
||||
Angular dev tooling uses native NodeJS modules. There are a number of issues
|
||||
when trying to run Angular projects with different NodeJS versions. These
|
||||
issues should be directed to the Angular project.
|
||||
Angular tooling uses native NodeJS modules. There are a number of issues when
|
||||
trying to run Angular projects with different NodeJS versions. These issues
|
||||
should be directed to the Angular project.
|
||||
|
||||
:::
|
||||
|
||||
|
@ -93,7 +93,7 @@ var XLSX = require('xlsx');
|
||||
exports.handler = function(event, context, callback) {
|
||||
/* make workbook */
|
||||
var wb = XLSX.read("S,h,e,e,t,J,S\n5,4,3,3,7,9,5", {type: "binary"});
|
||||
/* write to XLSX file in base64 encoding */
|
||||
/* write to XLSX file in Base64 encoding */
|
||||
// highlight-next-line
|
||||
var body = XLSX.write(wb, {type:"base64", bookType: "xlsx"});
|
||||