new test files links

This commit is contained in:
SheetJS 2026-03-23 02:38:17 -04:00
parent f77d0bd788
commit 20a52fe655
32 changed files with 239 additions and 125 deletions

@ -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

@ -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

@ -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

@ -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

@ -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

@ -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