new test files links
This commit is contained in:
parent
f77d0bd788
commit
20a52fe655
@ -450,7 +450,7 @@ This demo was tested in the following environments:
|
||||
|
||||
| Kaioken | ViteJS | Date |
|
||||
|:----------|:--------|:-----------|
|
||||
| `0.35.10` | `6.1.0` | 2025-02-11 |
|
||||
| `0.44.3` | `6.4.1` | 2026-03-14 |
|
||||
|
||||
:::
|
||||
|
||||
@ -597,7 +597,7 @@ This demo was tested in the following environments:
|
||||
|
||||
| Kaioken | ViteJS | Date |
|
||||
|:----------|:--------|:-----------|
|
||||
| `0.35.10` | `6.1.0` | 2025-02-11 |
|
||||
| `0.44.3` | `6.4.1` | 2026-03-14 |
|
||||
|
||||
:::
|
||||
|
||||
|
||||
@ -425,11 +425,11 @@ This demo was tested in the following environments:
|
||||
|
||||
| Angular | Date |
|
||||
|:----------|:-----------|
|
||||
| `20.2.3` | 2025-09-03 |
|
||||
| `19.0.5` | 2025-01-03 |
|
||||
| `18.2.13` | 2025-01-03 |
|
||||
| `17.3.12` | 2025-01-03 |
|
||||
| `16.2.12` | 2025-01-03 |
|
||||
| `20.3.1` | 2026-03-12 |
|
||||
| `19.2.17` | 2026-03-12 |
|
||||
| `18.2.14` | 2026-03-12 |
|
||||
| `17.3.12` | 2026-03-12 |
|
||||
| `16.2.16` | 2026-03-12 |
|
||||
|
||||
:::
|
||||
|
||||
@ -634,10 +634,11 @@ This demo was tested in the following environments:
|
||||
|
||||
| Angular | Date |
|
||||
|:----------|:-----------|
|
||||
| `19.0.5` | 2025-01-03 |
|
||||
| `18.2.13` | 2025-01-03 |
|
||||
| `17.3.12` | 2025-01-03 |
|
||||
| `16.2.12` | 2025-01-03 |
|
||||
| `20.3.1` | 2026-03-12 |
|
||||
| `19.2.17` | 2026-03-12 |
|
||||
| `18.2.14` | 2026-03-12 |
|
||||
| `17.3.12` | 2026-03-12 |
|
||||
| `16.2.16` | 2026-03-12 |
|
||||
|
||||
:::
|
||||
|
||||
@ -650,7 +651,7 @@ npx @angular/cli analytics disable -g
|
||||
1) Create a new project:
|
||||
|
||||
```bash
|
||||
npx @angular/cli@19 new --minimal --defaults --no-interactive sheetjs-angular
|
||||
npx @angular/cli@20 new --minimal --defaults --no-interactive sheetjs-angular
|
||||
```
|
||||
|
||||
:::note pass
|
||||
|
||||
@ -365,7 +365,7 @@ This demo was tested in the following environments:
|
||||
|
||||
| OpenUI5 | Date |
|
||||
|:----------|------------|
|
||||
| `1.132.1` | 2025-01-24 |
|
||||
| `1.145.0` | 2026-03-13 |
|
||||
|
||||
:::
|
||||
|
||||
@ -535,7 +535,7 @@ This demo was tested in the following environments:
|
||||
|
||||
| OpenUI5 | Date |
|
||||
|:----------|------------|
|
||||
| `1.132.1` | 2025-01-24 |
|
||||
| `1.145.0` | 2026-03-13 |
|
||||
|
||||
:::
|
||||
|
||||
|
||||
@ -589,10 +589,11 @@ NodeJS `fetch`, available in version 20, mirrors the [browser `fetch`](#fetch).
|
||||
|
||||
This demo was tested in the following environments:
|
||||
|
||||
| NodeJS | Date |
|
||||
|:-----------|:-----------|
|
||||
| `22.13.0` | 2025-01-08 |
|
||||
| `20.18.1` | 2025-01-08 |
|
||||
| NodeJS | Date |
|
||||
|:-----------|:------------|
|
||||
| `24.11.1` | 2026-03-22 |
|
||||
| `22.22.1` | 2026-03-22 |
|
||||
| `20.18.0` | 2026-03-22 |
|
||||
|
||||
:::
|
||||
|
||||
@ -705,18 +706,19 @@ This demo was tested in the following environments:
|
||||
|
||||
| NodeJS | `request` | Date |
|
||||
|:-----------|:----------|:-----------|
|
||||
| `22.13.0` | `2.88.2` | 2025-01-08 |
|
||||
| `20.18.1` | `2.88.2` | 2025-01-08 |
|
||||
| `18.20.5` | `2.88.2` | 2025-01-08 |
|
||||
| `16.20.2` | `2.88.2` | 2025-01-08 |
|
||||
| `14.21.3` | `2.88.2` | 2025-01-08 |
|
||||
| `12.22.12` | `2.88.2` | 2025-01-08 |
|
||||
| `10.24.1` | `2.88.2` | 2025-01-08 |
|
||||
| `8.17.0` | `2.88.2` | 2025-01-08 |
|
||||
| `6.17.1` | `2.88.2` | 2025-01-08 |
|
||||
| `4.9.1` | `2.81.0` | 2025-01-08 |
|
||||
| `0.12.18` | `2.81.0` | 2025-01-08 |
|
||||
| `0.10.48` | `2.81.0` | 2025-01-08 |
|
||||
| `24.11.1` | `2.88.2` | 2026-03-22 |
|
||||
| `22.22.1` | `2.88.2` | 2026-03-22 |
|
||||
| `20.18.0` | `2.88.2` | 2026-03-22 |
|
||||
| `18.20.8` | `2.88.2` | 2026-03-22 |
|
||||
| `16.20.2` | `2.88.2` | 2026-03-22 |
|
||||
| `14.21.3` | `2.88.2` | 2026-03-22 |
|
||||
| `12.22.12` | `2.88.2` | 2026-03-22 |
|
||||
| `10.24.1` | `2.88.2` | 2026-03-22 |
|
||||
| `8.17.0` | `2.88.2` | 2026-03-22 |
|
||||
| `6.17.1` | `2.88.2` | 2026-03-22 |
|
||||
| `4.9.1` | `2.88.2` | 2026-03-22 |
|
||||
| `0.12.18` | `2.81.0` | 2026-03-22 |
|
||||
| `0.10.48` | `2.81.0` | 2026-03-22 |
|
||||
|
||||
:::
|
||||
|
||||
@ -735,9 +737,13 @@ npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz request
|
||||
|
||||
:::note pass
|
||||
|
||||
The current version of `request` requires NodeJS 6 or later. For older versions
|
||||
The current version of `request` requires NodeJS 4 or later. For older versions
|
||||
of NodeJS, `request` version `2.81.0` should be installed.
|
||||
|
||||
<CodeBlock language="bash">{`\
|
||||
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz request@2.81.0`}
|
||||
</CodeBlock>
|
||||
|
||||
:::
|
||||
|
||||
2) Save the following to `SheetJSRequest.js`:
|
||||
|
||||
@ -26,8 +26,8 @@ This demo was tested in the following deployments:
|
||||
|
||||
| Version | Date |
|
||||
|:---------|:-----------|
|
||||
| `4.21.2` | 2025-01-03 |
|
||||
| `5.0.1` | 2025-01-03 |
|
||||
| `4.21.2` | 2026-03-12 |
|
||||
| `5.2.1` | 2026-03-12 |
|
||||
|
||||
:::
|
||||
|
||||
|
||||
@ -375,9 +375,9 @@ This demo was tested in the following deployments:
|
||||
| Architecture | DenoDOM | Deno | Date |
|
||||
|:-------------|:--------|:-------|:-----------|
|
||||
| `darwin-x64` | 0.1.48 | 2.7.4 | 2026-03-07 |
|
||||
| `darwin-arm` | 0.1.48 | 2.2.12 | 2025-04-24 |
|
||||
| `darwin-arm` | 0.1.48 | 2.7.4 | 2026-03-12 |
|
||||
| `win11-x64` | 0.1.48 | 2.2.12 | 2025-04-28 |
|
||||
| `win11-arm` | 0.1.48 | 2.2.1 | 2025-02-23 |
|
||||
| `win11-arm` | 0.1.48 | 2.7.7 | 2026-03-22 |
|
||||
| `linux-x64` | 0.1.48 | 2.7.4 | 2026-03-07 |
|
||||
| `linux-arm` | 0.1.48 | 2.7.4 | 2026-03-07 |
|
||||
|
||||
|
||||
@ -186,9 +186,9 @@ document.body.appendChild(elt);
|
||||
|
||||
This demo was tested in the following deployments:
|
||||
|
||||
| Version | Date |
|
||||
|:---------|:-----------|
|
||||
| `5.97.1` | 2025-01-08 |
|
||||
| Version | Date |
|
||||
|:----------|:-----------|
|
||||
| `5.105.2` | 2026-03-12 |
|
||||
|
||||
:::
|
||||
|
||||
|
||||
@ -52,13 +52,14 @@ This demo was tested in the following environments:
|
||||
|
||||
| AstroJS | Template | Date |
|
||||
|:--------|:-----------------|:-----------|
|
||||
| `4.6.1` | Starlight 0.22.4 | 2025-01-07 |
|
||||
| `5.1.3` | Starlight 0.30.5 | 2025-01-07 |
|
||||
| `6.0.6` | Starlight 0.38.1 | 2026-03-22 |
|
||||
|
||||
In previous test runs, this demo successfully ran using older AstroJS versions:
|
||||
|
||||
| AstroJS | Template |
|
||||
|:--------|:-----------------|
|
||||
| `5.1.3` | Starlight 0.30.5 |
|
||||
| `4.6.1` | Starlight 0.22.4 |
|
||||
| `3.6.5` | Starlight 0.14.0 |
|
||||
|
||||
:::
|
||||
|
||||
@ -48,18 +48,18 @@ This demo was tested in the following environments:
|
||||
|
||||
**Real Devices**
|
||||
|
||||
| OS | Device | Dart | Flutter | Date |
|
||||
|:-----------|:------------------|:--------|:---------|:-----------|
|
||||
| Android 34 | NVIDIA Shield | `3.7.2` | `3.29.2` | 2025-03-31 |
|
||||
| iOS 26.3 | iPhone 13 Pro Max | `3.11.1`| `3.41.4` | 2026-03-10 |
|
||||
| OS | Device | Dart | Flutter | Date |
|
||||
|:-----------|:------------------|:---------|:---------|:-----------|
|
||||
| Android 34 | NVIDIA Shield | `3.7.2` | `3.29.2` | 2025-03-31 |
|
||||
| iOS 26.3 | iPhone 13 Pro Max | `3.11.1` | `3.41.4` | 2026-03-10 |
|
||||
|
||||
**Simulators**
|
||||
|
||||
| OS | Device | Dart | Flutter | Dev Platform | Date |
|
||||
|:-----------|:------------------|:--------|:---------|:-------------|:-----------|
|
||||
| Android 36 | Pixel Table | `3.11.1` | `3.41.4` | `darwin-arm` | 2026-03-11 |
|
||||
| iOS 18.6 | iPhone 16 Pro Max | `3.11.1`| `3.41.4` | `darwin-arm` | 2026-03-11 |
|
||||
| Android 36 | Pixel 9 Pro XL | `3.7.2` | `3.29.3` | `win11-x64` | 2054-04-28 |
|
||||
| OS | Device | Dart | Flutter | Dev Platform | Date |
|
||||
|:-----------|:------------------|:---------|:---------|:-------------|:-----------|
|
||||
| Android 36 | Pixel Tablet | `3.11.1` | `3.41.4` | `darwin-arm` | 2026-03-11 |
|
||||
| iOS 18.6 | iPhone 16 Pro Max | `3.11.1` | `3.41.4` | `darwin-arm` | 2026-03-11 |
|
||||
| Android 36 | Pixel 9 Pro XL | `3.7.2` | `3.29.3` | `win11-x64` | 2054-04-28 |
|
||||
|
||||
:::
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ This demo was tested in the following deployments:
|
||||
| Architecture | Version | NodeJS | Date |
|
||||
|:-------------|:--------|:----------|:-----------|
|
||||
| `darwin-x64` | `3.0.0` | `25.8.0` | 2026-03-08 |
|
||||
| `darwin-arm` | `2.4.4` | `23.11.0` | 2025-06-18 |
|
||||
| `darwin-arm` | `3.0.0` | `23.11.0` | 2026-03-13 |
|
||||
| `win11-x64` | `2.4.4` | `16.20.2` | 2025-05-07 |
|
||||
| `linux-x64` | `3.0.0` | `25.8.0` | 2026-03-08 |
|
||||
| `linux-arm` | `2.4.4` | `23.8.0` | 2025-02-15 |
|
||||
|
||||
@ -159,7 +159,7 @@ This demo was tested in the following deployments:
|
||||
| Architecture | NodeJS | Date |
|
||||
|:-------------|:----------|:-----------|
|
||||
| `darwin-x64` | `24.13.0` | 2026-01-21 |
|
||||
| `darwin-arm` | `24.2.0` | 2025-06-18 |
|
||||
| `darwin-arm` | `20.18.0` | 2026-03-13 |
|
||||
| `win11-x64` | `24.13.0` | 2026-03-08 |
|
||||
| `win11-arm` | `22.14.0` | 2025-02-23 |
|
||||
| `linux-x64` | `24.11.0` | 2026-03-08 |
|
||||
|
||||
@ -8,7 +8,7 @@ sidebar_custom_props:
|
||||
---
|
||||
|
||||
<head>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/sql-wasm.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.13.0/sql-wasm.js"></script>
|
||||
</head>
|
||||
|
||||
import current from '/version.js';
|
||||
@ -39,11 +39,11 @@ This demo was tested in the following environments:
|
||||
|
||||
| Platform | Connector Library | Date |
|
||||
|:-----------------|:----------------------------|:-----------|
|
||||
| Chromium 131 | `sql.js` (`1.8.0`) | 2025-01-08 |
|
||||
| Konqueror 22 | `sql.js` (`1.8.0`) | 2025-04-23 |
|
||||
| NodeJS `20.18.0` | `better-sqlite3` (`11.7.2`) | 2025-01-08 |
|
||||
| BunJS `1.1.43` | (built-in) | 2025-01-08 |
|
||||
| Deno `2.1.4` | `sqlite` (`3.9.1`) | 2025-01-09 |
|
||||
| Chromium 143 | `sql.js` (`1.13.0`) | 2026-03-22 |
|
||||
| Konqueror 25 | `sql.js` (`1.13.0`) | 2026-03-22 |
|
||||
| NodeJS `20.18.0` | `better-sqlite3` (`12.6.2`) | 2026-03-22 |
|
||||
| BunJS `1.3.11` | (built-in) | 2026-03-22 |
|
||||
| Deno `2.7.4` | `sqlite` (`3.9.1`) | 2026-03-22 |
|
||||
|
||||
:::
|
||||
|
||||
@ -143,7 +143,7 @@ exported to a XLSX file.
|
||||
function SheetJSQLJS() { return (<button onClick={async() => {
|
||||
/* Load sql.js library */
|
||||
const config = {
|
||||
locateFile: filename => `https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/${filename}`
|
||||
locateFile: filename => `https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.13.0/${filename}`
|
||||
}
|
||||
const SQL = await initSqlJs(config);
|
||||
|
||||
@ -211,7 +211,7 @@ sqlite3 chinook.db ".read chinook.sql"
|
||||
|
||||
<CodeBlock language="bash">{`\
|
||||
npm init -y
|
||||
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz better-sqlite3@9.2.0`}
|
||||
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz better-sqlite3@12.6.2`}
|
||||
</CodeBlock>
|
||||
|
||||
2) Download [`SheetJSQLiteNode.mjs`](pathname:///sqlite/SheetJSQLiteNode.mjs):
|
||||
@ -288,7 +288,8 @@ import * as XLSX from "https://cdn.sheetjs.com/xlsx-${current}/package/xlsx.mjs"
|
||||
var db = new DB("chinook.db");
|
||||
\n\
|
||||
/* get data from the \`Invoice\` table */
|
||||
var aoa = db.prepareQuery("SELECT * FROM 'Invoice' LIMIT 100000").all();
|
||||
var query = db.prepareQuery("SELECT * FROM 'Invoice' LIMIT 100000");
|
||||
var aoa = query.all();
|
||||
\n\
|
||||
/* create worksheet from the row objects */
|
||||
var data = [query.columns().map(x => x.name)].concat(aoa);
|
||||
|
||||
@ -25,10 +25,9 @@ This demo was tested in the following environments:
|
||||
|
||||
| Version | Database | Connector Module | Date |
|
||||
|:----------|:---------|:-----------------|:-----------|
|
||||
| `0.21.20` | SQLite | `sqlite3` | 2025-01-09 |
|
||||
| `2.4.2` | SQLite | `better-sqlite3` | 2025-01-09 |
|
||||
| `2.5.1` | SQLite | `better-sqlite3` | 2025-01-09 |
|
||||
| `3.1.0` | SQLite | `better-sqlite3` | 2025-01-09 |
|
||||
| `0.21.20` | SQLite | `sqlite3` | 2026-03-22 |
|
||||
| `2.5.1` | SQLite | `better-sqlite3` | 2026-03-22 |
|
||||
| `3.1.0` | SQLite | `better-sqlite3` | 2026-03-22 |
|
||||
|
||||
:::
|
||||
|
||||
|
||||
@ -36,12 +36,13 @@ This demo was tested in the following environments:
|
||||
|
||||
| Postgres | Connector Library | Date |
|
||||
|:---------|:------------------|:-----------|
|
||||
| `17.2` | `pg` (`8.13.1`) | 2025-01-03 |
|
||||
| `16.6` | `pg` (`8.13.1`) | 2025-01-03 |
|
||||
| `15.10` | `pg` (`8.13.1`) | 2025-01-03 |
|
||||
| `14.15` | `pg` (`8.13.1`) | 2025-01-03 |
|
||||
| `13.18` | `pg` (`8.13.1`) | 2025-01-03 |
|
||||
| `12.22` | `pg` (`8.13.1`) | 2025-01-03 |
|
||||
| `18.3` | `pg` (`8.20.0`) | 2026-03-22 |
|
||||
| `17.2` | `pg` (`8.20.0`) | 2026-03-22 |
|
||||
| `16.6` | `pg` (`8.20.0`) | 2026-03-22 |
|
||||
| `15.10` | `pg` (`8.20.0`) | 2026-03-22 |
|
||||
| `14.15` | `pg` (`8.20.0`) | 2026-03-22 |
|
||||
| `13.18` | `pg` (`8.20.0`) | 2026-03-22 |
|
||||
| `12.22` | `pg` (`8.20.0`) | 2026-03-22 |
|
||||
|
||||
:::
|
||||
|
||||
|
||||
@ -36,7 +36,8 @@ This demo was tested in the following environments:
|
||||
|
||||
| MariaDB | Connector Library | Date |
|
||||
|:---------|:--------------------|:-----------|
|
||||
| `11.6.2` | `mysql2` (`3.12.0`) | 2025-01-19 |
|
||||
| `11.8` | `mysql2` (`3.20.2`) | 2026-03-22 |
|
||||
| `10.6` | `mysql2` (`3.20.2`) | 2026-03-22 |
|
||||
|
||||
:::
|
||||
|
||||
|
||||
@ -10,27 +10,35 @@ sidebar_custom_props:
|
||||
import current from '/version.js';
|
||||
import CodeBlock from '@theme/CodeBlock';
|
||||
|
||||
[MongoDB](https://mongodb.github.io/node-mongodb-native/) is a document-oriented
|
||||
database engine. [FerretDB](https://www.ferretdb.com/) is a truly open source
|
||||
implementation of the MongoDB wire protocol.
|
||||
:::danger pass
|
||||
|
||||
**MongoDB is not open source!**
|
||||
|
||||
MongoDB uses the Server Side Public License (SSPL), which is not open source.
|
||||
|
||||
This demo has been tested with FerretDB and other servers that implement the
|
||||
MongoDB wire protocol.
|
||||
|
||||
:::
|
||||
|
||||
[FerretDB](https://www.ferretdb.com/) is an Apache 2.0-licensed document database
|
||||
that implements the MongoDB wire protocol using PostgreSQL or SQLite as the backend.
|
||||
|
||||
[SheetJS](https://sheetjs.com) is a JavaScript library for reading and writing
|
||||
data from spreadsheets.
|
||||
|
||||
This demo uses SheetJS to exchange data between spreadsheets and MongoDB. We'll
|
||||
explore how to use save tables from a MongoDB collection to spreadsheets and how
|
||||
to add data from spreadsheets into a collection.
|
||||
explore how to save tables from a database collection to spreadsheets and how to
|
||||
add data from spreadsheets into a collection.
|
||||
|
||||
:::note Tested Deployments
|
||||
|
||||
This demo was tested in the following environments:
|
||||
|
||||
| Server | Connector Library | Date |
|
||||
|:--------------------|:---------------------|:-----------|
|
||||
| FerretDB `1.24.0` | `mongodb` (`6.12.0`) | 2025-01-03 |
|
||||
| MongoDB CE `8.0.4` | `mongodb` (`6.12.0`) | 2025-01-19 |
|
||||
| MongoDB CE `7.0.16` | `mongodb` (`6.12.0`) | 2025-01-19 |
|
||||
| MongoDB CE `6.0.20` | `mongodb` (`6.5.0`) | 2025-01-19 |
|
||||
| Server | Connector Library | Date |
|
||||
|:-------------------|:--------------------|:-----------|
|
||||
| FerretDB `1.24.0` | `mongodb` (`7.1.0`) | 2026-03-22 |
|
||||
| MongoDB CE `8.2.0` | `mongodb` (`7.1.0`) | 2026-03-22 |
|
||||
|
||||
:::
|
||||
|
||||
@ -87,14 +95,12 @@ with the [`writeFile`](/docs/api/write-options) method.
|
||||
|
||||
## Complete Example
|
||||
|
||||
0) Install a MongoDB-compatible server (MongoDB CE[^3] or FerretDB[^4]).
|
||||
|
||||
1) Start a server on `localhost` (follow official instructions).
|
||||
1) Install and start a compatible database locally.
|
||||
|
||||
<details>
|
||||
<summary><b>MongoDB CE Setup</b> (click to show)</summary>
|
||||
<summary><b>MongoDB CE</b> (click to show)</summary>
|
||||
|
||||
For MongoDB 8.0 Community Edition, the macOS steps required `brew`:
|
||||
For MongoDB 8.2 Community Edition, the macOS steps required `brew`:
|
||||
|
||||
```bash
|
||||
brew tap mongodb/brew
|
||||
@ -118,7 +124,7 @@ $(brew --prefix)/opt/mongodb-community/bin/mongod --config $(brew --prefix)/etc/
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>FerretDB Setup</b> (click to show)</summary>
|
||||
<summary><b>FerretDB</b> (click to show)</summary>
|
||||
|
||||
The official documentation recommends Docker, but it is strongly recommended to
|
||||
use [`colima`](https://github.com/abiosoft/colima) on MacOS:
|
||||
@ -190,7 +196,7 @@ docker run -d --rm --name ferretdb -p 27017:27017 -e FERRETDB_HANDLER=sqlite ghc
|
||||
mkdir sheetjs-mongo
|
||||
cd sheetjs-mongo
|
||||
npm init -y
|
||||
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz mongodb@6.12.0`}
|
||||
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz mongodb@7.1.0`}
|
||||
</CodeBlock>
|
||||
|
||||
3) Save the following to `SheetJSMongoCRUD.mjs` (the key step is highlighted):
|
||||
|
||||
@ -24,8 +24,9 @@ serialization protocol" (RESP).
|
||||
|
||||
:::
|
||||
|
||||
[KeyDB](https://docs.keydb.dev/) is a Redis-compatible in-memory data store. It
|
||||
is capable of storing sets, lists and other simple data structures.
|
||||
[KeyDB](https://docs.keydb.dev/) is a Redis-compatible in-memory data store
|
||||
licensed under BSD-3-Clause. It is capable of storing sets, lists and other
|
||||
simple data structures.
|
||||
|
||||
[SheetJS](https://sheetjs.com) is a JavaScript library for reading and writing
|
||||
data from spreadsheets.
|
||||
@ -38,12 +39,12 @@ from XLSX files to a Redis database and to serialize a database to a workbook.
|
||||
|
||||
This demo was tested in the following environments:
|
||||
|
||||
| Server | Connector Module | Date |
|
||||
|:----------------|:------------------|:----------:|
|
||||
| KeyDB `6.3.4` | `redis` (`4.7.0`) | 2025-01-08 |
|
||||
| Redis `6.2.17` | `redis` (`4.7.0`) | 2025-01-08 |
|
||||
| Valkey `8.0.2` | `redis` (`4.7.0`) | 2025-01-08 |
|
||||
| Garnet `1.0.49` | `redis` (`4.7.0`) | 2025-01-08 |
|
||||
| Server | Connector Module | Date |
|
||||
|:---------------|:-------------------|:----------:|
|
||||
| KeyDB `6.3.4` | `redis` (`5.11.0`) | 2026-03-22 |
|
||||
| Redis `6.2.18` | `redis` (`5.11.0`) | 2026-03-22 |
|
||||
| Valkey `9.0.3` | `redis` (`5.11.0`) | 2026-03-22 |
|
||||
| Garnet `1.1.1` | `redis` (`5.11.0`) | 2026-03-22 |
|
||||
|
||||
:::
|
||||
|
||||
@ -249,12 +250,14 @@ this demo also requires NodeJS version 18 or later.
|
||||
|
||||
This demo was last tested on macOS.
|
||||
|
||||
---
|
||||
|
||||
_KeyDB_
|
||||
|
||||
KeyDB was installed with:
|
||||
KeyDB was installed from Homebrew:
|
||||
|
||||
```bash
|
||||
brew install keydb@6.3.4
|
||||
brew install keydb
|
||||
```
|
||||
|
||||
The following command started the server process:
|
||||
@ -263,6 +266,8 @@ The following command started the server process:
|
||||
keydb-server --protected-mode no
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
_Valkey_
|
||||
|
||||
Valkey was installed with:
|
||||
@ -278,7 +283,7 @@ This conflicts with the main `redis` package. `redis` must be unlinked:
|
||||
|
||||
```bash
|
||||
brew unlink redis
|
||||
brew link valkey
|
||||
brew link valkey || brew install valkey
|
||||
```
|
||||
|
||||
:::
|
||||
@ -286,9 +291,11 @@ brew link valkey
|
||||
The following command started the server process:
|
||||
|
||||
```bash
|
||||
redis-server $(brew config | grep HOMEBREW_PREFIX | awk '{print $2}')/etc/redis.conf
|
||||
redis-server $(brew --prefix)/etc/redis.conf
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
_Redis 6_
|
||||
|
||||
Redis 6 was installed with:
|
||||
@ -300,7 +307,7 @@ brew install redis@6.2
|
||||
The following command started the server process:
|
||||
|
||||
```bash
|
||||
redis-server $(brew config | grep HOMEBREW_PREFIX | awk '{print $2}')/etc/redis.conf
|
||||
redis-server $(brew --prefix)/etc/redis.conf
|
||||
```
|
||||
|
||||
:::caution pass
|
||||
@ -310,6 +317,8 @@ version of Redis.
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
_Garnet_
|
||||
|
||||
After installing `dotnet` and .NET runtime, install the `garnet-server` tool:
|
||||
@ -335,7 +344,7 @@ curl -LO https://docs.sheetjs.com/nosql/SheetJSRedisTest.mjs
|
||||
2) Install dependencies:
|
||||
|
||||
<CodeBlock language="bash">{`\
|
||||
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz redis@4.6.13`}
|
||||
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz redis@5.11.0`}
|
||||
</CodeBlock>
|
||||
|
||||
3) Run the test script:
|
||||
|
||||
@ -54,7 +54,7 @@ This demo was tested in the following deployments:
|
||||
| Architecture | Version | Date |
|
||||
|:-------------|:------------------|:-----------|
|
||||
| `darwin-x64` | `18.5` (StataNow) | 2025-06-20 |
|
||||
| `darwin-arm` | `18.5` (StataNow) | 2025-04-24 |
|
||||
| `darwin-arm` | `19.5` (StataNow) | 2026-03-13 |
|
||||
| `win11-x64` | `18.5` (StataNow) | 2025-04-28 |
|
||||
| `win11-arm` | `18.5` (StataNow) | 2025-02-23 |
|
||||
| `linux-x64` | `19.5` (StataNow) | 2025-07-06 |
|
||||
@ -299,7 +299,7 @@ curl -LO https://docs.sheetjs.com/stata/cleanfile.c
|
||||
7) Build the plugin:
|
||||
|
||||
```bash title="Build plugin (run in terminal)"
|
||||
gcc -shared -fPIC -DSYSTEM=APPLEMAC stplugin.c duktape.c cleanfile.c -lm -std=c99 -Wall -ocleanfile.plugin
|
||||
gcc -shared -fPIC -DSYSTEM=APPLEMAC -fms-extensions stplugin.c duktape.c cleanfile.c -lm -std=c99 -Wall -o cleanfile.plugin
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
@ -399,11 +399,11 @@ includes a live example of CSV streaming write.
|
||||
|
||||
The demo has a URL input box. Feel free to change the URL. For example,
|
||||
|
||||
`https://raw.githubusercontent.com/SheetJS/test_files/master/large_strings.xls`
|
||||
is an XLS file over 50 MB
|
||||
`https://test-files.sheetjs.com/large_strings.xls` is a large XLS file with many
|
||||
large strings (approximately 56 MB).
|
||||
|
||||
`https://raw.githubusercontent.com/SheetJS/libreoffice_test-files/master/calc/xlsx-import/perf/8-by-300000-cells.xlsx`
|
||||
is an XLSX file with 300000 rows (approximately 20 MB)
|
||||
`https://test-files.sheetjs.com/8-by-300000-cells.xlsx` is an XLSX file with
|
||||
300000 rows (approximately 20 MB).
|
||||
|
||||
<CodeBlock language="jsx" live>{`\
|
||||
function SheetJSFetchCSVStreamWorker() {
|
||||
|
||||
@ -576,10 +576,10 @@ will try to commit each row as it is generated.
|
||||
|
||||
The demo also has a URL input box. Feel free to change the URL. For example:
|
||||
|
||||
`https://raw.githubusercontent.com/SheetJS/test_files/master/large_strings.xls`
|
||||
is an XLS file over 50 MB. The generated CSV file is about 55 MB.
|
||||
`https://test-files.sheetjs.com/large_strings.xls` is approximately 56 MB. The
|
||||
equivalent CSV is about 55 MB.
|
||||
|
||||
`https://raw.githubusercontent.com/SheetJS/libreoffice_test-files/master/calc/xlsx-import/perf/8-by-300000-cells.xlsx`
|
||||
`https://test-files.sheetjs.com/8-by-300000-cells.xlsx`
|
||||
is an XLSX file with 300000 rows (approximately 20 MB) yielding a CSV of 10 MB.
|
||||
|
||||
<CodeBlock language="jsx" live>{`\
|
||||
|
||||
@ -226,7 +226,7 @@ curl -LO https://docs.sheetjs.com/duk/sheetjs.duk.c
|
||||
<TabItem value="unix" label="Linux/MacOS">
|
||||
|
||||
```bash
|
||||
gcc -std=c99 -Wall -osheetjs.duk sheetjs.duk.c duktape.c -lm
|
||||
gcc -std=c99 -Wall -o sheetjs.duk sheetjs.duk.c duktape.c -lm
|
||||
```
|
||||
|
||||
:::note pass
|
||||
|
||||
@ -164,9 +164,9 @@ This demo was tested in the following deployments:
|
||||
| Architecture | Jint | Date |
|
||||
|:-------------|:--------|:-----------|
|
||||
| `darwin-x64` | `4.5.0` | 2026-01-21 |
|
||||
| `darwin-arm` | `4.5.0` | 2026-01-23 |
|
||||
| `darwin-arm` | `4.6.3` | 2026-03-22 |
|
||||
| `win11-x64` | `4.2.2` | 2026-04-28 |
|
||||
| `win11-arm` | `4.2.0` | 2025-02-23 |
|
||||
| `win11-arm` | `4.6.3` | 2026-03-22 |
|
||||
| `linux-x64` | `4.2.2` | 2025-06-16 |
|
||||
| `linux-arm` | `4.5.0` | 2026-03-07 |
|
||||
|
||||
@ -248,7 +248,7 @@ dotnet run
|
||||
|
||||
```bash
|
||||
dotnet nuget add source https://www.myget.org/F/jint/api/v3/index.json
|
||||
dotnet add package Jint --version 4.5.0
|
||||
dotnet add package Jint --version 4.6.3
|
||||
```
|
||||
|
||||
To verify Jint is installed, replace `Program.cs` with the following:
|
||||
|
||||
@ -108,7 +108,7 @@ This demo was tested in the following deployments:
|
||||
| `darwin-x64` | `651366f` | `1.25.6` | 2026-01-21 |
|
||||
| `darwin-arm` | `6a7976c` | `1.24.0` | 2026-03-07 |
|
||||
| `win11-x64` | `6a7976c` | `1.24.2` | 2026-03-08 |
|
||||
| `win11-arm` | `5ef83b8` | `1.24.0` | 2025-02-23 |
|
||||
| `win11-arm` | `065cd970` | `1.26.1` | 2026-03-22 |
|
||||
| `linux-x64` | `cb187b0` | `1.22.2` | 2025-06-16 |
|
||||
| `linux-arm` | `6a7976c` | `1.24.4` | 2026-03-07 |
|
||||
|
||||
|
||||
@ -108,7 +108,7 @@ This demo was tested in the following deployments:
|
||||
| `darwin-x64` | `0.20.1` | 2026-01-21 |
|
||||
| `darwin-arm` | `0.21.0` | 2026-03-07 |
|
||||
| `win11-x64` | `0.20.0` | 2025-04-28 |
|
||||
| `win11-arm` | `0.20.0` | 2025-02-23 |
|
||||
| `win11-arm` | `0.21.0` | 2026-03-22 |
|
||||
| `linux-x64` | `0.21.0` | 2026-01-08 |
|
||||
| `linux-arm` | `0.21.0` | 2026-03-07 |
|
||||
|
||||
|
||||
@ -179,7 +179,7 @@ This demo was tested in the following deployments:
|
||||
| `darwin-x64` | `3.2.9` | 2026-01-21 |
|
||||
| `darwin-arm` | `3.2.9` | 2026-03-07 |
|
||||
| `win11-x64` | `3.2.9` | 2025-04-23 |
|
||||
| `win11-arm` | `3.2.9` | 2025-02-23 |
|
||||
| `win11-arm` | `3.2.9` | 2026-03-22 |
|
||||
| `linux-x64` | `3.2.9` | 2026-03-07 |
|
||||
| `linux-arm` | `3.2.9` | 2026-03-07 |
|
||||
|
||||
|
||||
@ -29,11 +29,11 @@ done
|
||||
|
||||
mv SheetJSKnexTestOrig.js SheetJSKnexTest.js
|
||||
|
||||
for n in 2.4 2.5 3.1; do
|
||||
for n in 2.5 3.1; do
|
||||
npm i --save knex@$n better-sqlite3
|
||||
npm ls | grep knex
|
||||
|
||||
node SheetJSKnexTest.js
|
||||
node SheetJSKnexTest.js
|
||||
npx xlsx-cli SheetJSKnex.xlsx
|
||||
sqlite3 SheetJSKnex.db 'select * from Test_Table'
|
||||
done
|
||||
|
||||
34
tests/data/mariadb.sh
Executable file
34
tests/data/mariadb.sh
Executable file
@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
# https://docs.sheetjs.com/docs/demos/data/mariadb
|
||||
## NOTE: these steps are for darwin-arm
|
||||
|
||||
cd /tmp
|
||||
mkdir sheetjs-mariadb
|
||||
cd sheetjs-mariadb
|
||||
npm init -y
|
||||
npm i --save https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz mysql2@latest
|
||||
|
||||
curl -LO https://docs.sheetjs.com/mariadb/SheetJSMariaDB.js
|
||||
curl -L -O https://docs.sheetjs.com/pres.numbers
|
||||
|
||||
for n in 10.6 11.8; do
|
||||
# brew install mariadb@$n
|
||||
echo $n
|
||||
|
||||
# "If you need to have mariadb@$n first in your PATH, run:"
|
||||
export PATH="/opt/homebrew/opt/mariadb@$n/bin:$PATH"
|
||||
|
||||
# "Or, if you don't want/need a background service you can just run:"
|
||||
mysqld_safe --skip-grant-tables &
|
||||
sleep 5
|
||||
|
||||
mysql -u root -e 'DROP DATABASE IF EXISTS SheetJSMariaDB;'
|
||||
mysql -u root -e 'CREATE DATABASE SheetJSMariaDB;'
|
||||
|
||||
node SheetJSMariaDB.js
|
||||
npx xlsx-cli SheetJSMariaDBExport.xlsx
|
||||
mysql -u root SheetJSMariaDB -e 'SELECT * FROM Presidents;'
|
||||
|
||||
killall mysqld 2>/dev/null
|
||||
sleep 2
|
||||
done
|
||||
7
tests/data/postgres.sh
Normal file → Executable file
7
tests/data/postgres.sh
Normal file → Executable file
@ -6,12 +6,12 @@ cd /tmp
|
||||
mkdir sheetjs-pg
|
||||
cd sheetjs-pg
|
||||
npm init -y
|
||||
npm i --save https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz pg@8.13.1 pg-format@1.0.4
|
||||
npm i --save https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz pg@8.20.0 pg-format@1.0.4
|
||||
|
||||
curl -LO https://docs.sheetjs.com/postgresql/SheetJSPG.js
|
||||
curl -L -O https://docs.sheetjs.com/pres.numbers
|
||||
curl -LO https://docs.sheetjs.com/pres.numbers
|
||||
|
||||
for n in 1{2..7}; do
|
||||
for n in 1{2..8}; do
|
||||
# brew install postgresql@$n
|
||||
echo $n
|
||||
|
||||
@ -30,5 +30,6 @@ for n in 1{2..7}; do
|
||||
psql SheetJSPG -c 'SELECT * FROM "Presidents";'
|
||||
|
||||
kill $!
|
||||
sleep 2
|
||||
done
|
||||
|
||||
|
||||
19
tests/data/sqlite-bun.sh
Executable file
19
tests/data/sqlite-bun.sh
Executable file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
# https://docs.sheetjs.com/docs/demos/data/sqlite/#bunjs-demo
|
||||
|
||||
cd /tmp
|
||||
rm -rf sheetjs-sqlite-bun
|
||||
mkdir sheetjs-sqlite-bun
|
||||
cd sheetjs-sqlite-bun
|
||||
bun init -y
|
||||
|
||||
curl -L -O https://docs.sheetjs.com/sqlite/chinook.sql
|
||||
sqlite3 chinook.db ".read chinook.sql"
|
||||
|
||||
curl -L -O https://docs.sheetjs.com/sqlite/SheetJSQLiteBun.mjs
|
||||
|
||||
bun install https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz
|
||||
|
||||
bun run SheetJSQLiteBun.mjs
|
||||
|
||||
npx xlsx-cli -l SheetJSQLiteBun.xlsx
|
||||
16
tests/data/sqlite-deno.sh
Executable file
16
tests/data/sqlite-deno.sh
Executable file
@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
# https://docs.sheetjs.com/docs/demos/data/sqlite/#deno-demo
|
||||
|
||||
cd /tmp
|
||||
rm -rf sheetjs-sqlite-deno
|
||||
mkdir sheetjs-sqlite-deno
|
||||
cd sheetjs-sqlite-deno
|
||||
|
||||
curl -L -O https://docs.sheetjs.com/sqlite/chinook.sql
|
||||
sqlite3 chinook.db ".read chinook.sql"
|
||||
|
||||
curl -L -O https://docs.sheetjs.com/sqlite/SheetJSQLiteDeno.ts
|
||||
|
||||
deno run --allow-read --allow-write --allow-import SheetJSQLiteDeno.ts
|
||||
|
||||
npx xlsx-cli -l SheetJSQLiteDeno.xlsx
|
||||
19
tests/data/sqlite-node.sh
Executable file
19
tests/data/sqlite-node.sh
Executable file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
# https://docs.sheetjs.com/docs/demos/data/sqlite/#nodejs-demo
|
||||
|
||||
cd /tmp
|
||||
rm -rf sheetjs-sqlite
|
||||
mkdir sheetjs-sqlite
|
||||
cd sheetjs-sqlite
|
||||
npm init -y
|
||||
|
||||
npm i --save better-sqlite3@12.6.2 https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz
|
||||
|
||||
curl -L -O https://docs.sheetjs.com/sqlite/chinook.sql
|
||||
sqlite3 chinook.db ".read chinook.sql"
|
||||
|
||||
curl -L -O https://docs.sheetjs.com/sqlite/SheetJSQLiteNode.mjs
|
||||
|
||||
node SheetJSQLiteNode.mjs
|
||||
|
||||
npx xlsx-cli -l SheetJSQLiteNode.xlsx
|
||||
@ -12,7 +12,7 @@ dotnet new console
|
||||
dotnet run
|
||||
|
||||
dotnet nuget add source https://www.myget.org/F/jint/api/v3/index.json
|
||||
dotnet add package Jint --version 4.5.0
|
||||
dotnet add package Jint --version 4.6.3
|
||||
|
||||
curl -LO https://cdn.sheetjs.com/xlsx-latest/package/dist/shim.min.js
|
||||
curl -LO https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js
|
||||
|
||||
Loading…
Reference in New Issue
Block a user