Konqueror 22

This commit is contained in:
SheetJS 2025-04-23 20:30:01 -04:00
parent 9e7ef1f399
commit 9efdb8ad2b
40 changed files with 368 additions and 127 deletions

@ -139,6 +139,10 @@ function SheetJSTestDropbox() {
## Other Notes
`static/shim.js` shims the following functions:
- `Object.hasOwn`
`src/theme/Admonition` was swizzled from 3.2.1 to enable `pass` for hiding
header text. See Docusaurus issue 8568 for more details.

@ -38,10 +38,11 @@ tutorial first.
This browser demo was tested in the following environments:
| Browser | Date |
|:------------|:-----------|
| Chrome 133 | 2025-03-30 |
| Safari 18.3 | 2025-03-30 |
| Browser | Date |
|:-------------|:-----------|
| Chromium 133 | 2025-03-30 |
| Safari 18.3 | 2025-03-30 |
| Konqueror 22 | 2025-04-23 |
:::

@ -21,10 +21,11 @@ This demo covers details elided in the official DanfoJS documentation.
This demo was tested in the following deployments:
| Platform | Version | Date |
|:------------|:--------|:-----------|
| Chrome 131 | `1.1.2` | 2025-01-01 |
| Safari 18.2 | `1.1.2` | 2025-01-01 |
| Platform | Version | Date |
|:-------------|:--------|:-----------|
| Chromium 131 | `1.1.2` | 2025-01-01 |
| Safari 18.2 | `1.1.2` | 2025-01-01 |
| Konqueror 22 | `1.1.2` | 2025-04-23 |
:::

@ -34,10 +34,11 @@ results back to spreadsheets.
Each browser demo was tested in the following environments:
| Browser | TF.js | Date |
|:------------|:----------|:-----------|
| Chrome 133 | `4.22.0` | 2025-04-21 |
| Safari 18.3 | `4.22.0` | 2025-04-21 |
| Browser | TF.js | Date |
|:-------------|:----------|:-----------|
| Chromium 133 | `4.22.0` | 2025-04-21 |
| Safari 18.3 | `4.22.0` | 2025-04-21 |
| Konqueror 22 | `4.22.0` | 2025-04-23 |
The NodeJS demo was tested in the following environments:

@ -37,6 +37,7 @@ This demo was tested in the following environments:
| Browser | Version | Date |
|:-------------|:------------------|:-----------|
| Chromium 133 | `1.8.2` (latest) | 2025-03-30 |
| Konqueror 22 | `1.8.2` (latest) | 2025-04-23 |
| Chromium 133 | `1.2.32` (legacy) | 2025-03-30 |
:::

@ -77,6 +77,7 @@ This demo was tested in the following environments:
| Platform | Date |
|:-------------|:-----------|
| Chromium 133 | 2025-03-30 |
| Konqueror 22 | 2025-04-23 |
Demos exclusively using Dojo Core were tested using Dojo Toolkit `1.17.3`.

@ -88,10 +88,11 @@ first worksheet. The SheetJS `sheet_to_html` method[^2] creates the HTML table.
Each browser demo was tested in the following environments:
| Browser | Date |
|:------------|:-----------|
| Chrome 133 | 2025-03-30 |
| Safari 18.3 | 2025-03-30 |
| Browser | Date |
|:-------------|:-----------|
| Chromium 133 | 2025-03-30 |
| Safari 18.3 | 2025-03-30 |
| Konqueror 22 | 2025-04-23 |
:::

@ -133,10 +133,11 @@ response. If the process was successful, a HTML table will be displayed
Each browser demo was tested in the following environments:
| Browser | Date |
|:------------|:-----------|
| Chrome 133 | 2025-03-30 |
| Safari 18.3 | 2025-03-30 |
| Browser | Date |
|:-------------|:-----------|
| Chromium 133 | 2025-03-30 |
| Safari 18.3 | 2025-03-30 |
| Konqueror 22 | 2025-04-23 |
:::

@ -36,11 +36,12 @@ the file can be downloaded or previewed in the browser.
This demo was tested in the following deployments:
| Platform | Version | Date |
|:------------|:---------|:-----------|
| Chrome 131 | `1.9.0` | 2024-12-22 |
| NodeJS 20 | `1.10.0` | 2024-12-22 |
| BunJS 1.1 | `1.10.0` | 2024-12-22 |
| Platform | Version | Date |
|:-------------|:---------|:-----------|
| Chromium 131 | `1.9.0` | 2024-12-22 |
| Konqueror 22 | `1.9.0` | 2025-04-23 |
| NodeJS 20 | `1.10.0` | 2024-12-22 |
| BunJS 1.1 | `1.10.0` | 2024-12-22 |
:::

@ -18,10 +18,11 @@ With a familiar UI, `x-spreadsheet` is an excellent choice for a modern editor.
This demo was tested in the following environments:
| Browser | Date |
|:------------|:-----------|
| Chrome 131 | 2024-12-31 |
| Safari 18.2 | 2024-12-31 |
| Browser | Date |
|:-------------|:-----------|
| Chromium 131 | 2024-12-31 |
| Safari 18.2 | 2024-12-31 |
| Konqueror 22 | 2025-04-23 |
:::

@ -17,10 +17,11 @@ with a straightforward API.
This demo was tested in the following environments:
| Browser | Date |
|:------------|:-----------|
| Chrome 131 | 2024-12-31 |
| Safari 18.2 | 2024-12-31 |
| Browser | Date |
|:-------------|:-----------|
| Chromium 131 | 2024-12-31 |
| Safari 18.2 | 2024-12-31 |
| Konqueror 22 | 2025-04-23 |
:::

@ -25,6 +25,7 @@ This demo was tested in the following deployments:
| Browser | Version | Date |
|:-------------|:--------|:-----------|
| Chromium 133 | `6.3.1` | 2025-03-31 |
| Konqueror 22 | `6.3.1` | 2025-04-23 |
:::

@ -28,7 +28,8 @@ This demo was tested in the following deployments:
| Browser | Version | Date |
|:-------------|:--------|:-----------|
| Chromium 125 | `1.4.0` | 2024-06-13 |
| Chromium 135 | `1.4.3` | 2025-04-23 |
| Konqueror 22 | `1.4.3` | 2025-04-23 |
:::
@ -40,7 +41,7 @@ installation in ViteJS projects using Vue 3 Table Lite.
Using the `npm` tool, this command installs SheetJS and Vue 3 Table Lite:
<CodeBlock language="bash">{`\
npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz vue3-table-lite@1.4.0`}
npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz vue3-table-lite@1.4.3`}
</CodeBlock>
#### Rows and Columns Bindings
@ -136,7 +137,7 @@ cd sheetjs-vtl
2) Install dependencies:
<CodeBlock language="bash">{`\
npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz vue3-table-lite@1.4.0`}
npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz vue3-table-lite@1.4.3`}
</CodeBlock>
3) Download [`src/App.vue`](pathname:///vtl/App.vue) and replace the contents:

@ -30,7 +30,28 @@ This demo was tested in the following environments:
| Browser | Version | Date |
|:-------------|:--------|:-----------|
| Chromium 125 | `5.3.2` | 2024-06-09 |
| Chromium 135 | `5.3.2` | 2025-04-23 |
| Konqueror 22 | `5.3.2` | 2025-04-23 |
:::
:::danger pass
**Glide Data Grid is not compatible with ReactJS 19!**
When trying to install in a new project, `npm install` will fail:
```
npm error Found: react@19.1.0
npm error node_modules/react
npm error react@"^19.0.0" from the root project
npm error
npm error Could not resolve dependency:
npm error peer react@"^16.12.0 || 17.x || 18.x" from @glideapps/glide-data-grid@5.3.2
npm error node_modules/@glideapps/glide-data-grid
```
This demo explicitly uses ReactJS 18.
:::
@ -344,13 +365,19 @@ cd sheetjs-gdg
npm i
```
2) Install SheetJS and Glide Data Grid libraries:
2) Explicitly downgrade ReactJS to version 18:
```bash
npm i --save react@18 react-dom@18
```
3) Install SheetJS and Glide Data Grid libraries:
<CodeBlock language="bash">{`\
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @glideapps/glide-data-grid@5.3.2`}
</CodeBlock>
3) Start dev server:
4) Start the dev server:
```bash
npm run dev
@ -359,21 +386,21 @@ npm run dev
The terminal window will display a URL (typically `http://localhost:5173`).
Open the URL with a web browser and confirm that a page loads.
4) Download [`App.tsx`](pathname:///gdg/App.tsx) and replace `src/App.tsx`:
5) Download [`App.tsx`](pathname:///gdg/App.tsx) and replace `src/App.tsx`:
```bash
curl -L -o src/App.tsx https://docs.sheetjs.com/gdg/App.tsx
```
**Testing**
#### Testing
5) Refresh the browser window. A grid should be displayed:
6) Refresh the browser window. A grid should be displayed:
![glide-data-grid initial view](pathname:///gdg/pre.png)
The demo downloads and processes https://docs.sheetjs.com/pres.numbers .
6) Make some changes to the grid data.
7) Make some changes to the grid data.
:::note pass
@ -388,14 +415,14 @@ values should be 41, 42, 43, 44, and 45, as shown in the screenshot below:
![glide-data-grid after edits](pathname:///gdg/post.png)
7) Click on the "Export" button. The browser should attempt to download a XLSX
8) Click on the "Export" button. The browser should attempt to download a XLSX
file (`sheetjs-gdg.xlsx`). Save the file.
Open the generated file and verify the contents match the grid.
8) Reload the page. The contents will revert back to the original table.
9) Reload the page. The contents will revert back to the original table.
9) Click "Choose File" and select the new `sheetjs-gdg.xlsx` file. The table
10) Click "Choose File" and select the new `sheetjs-gdg.xlsx` file. The table
should update with the data in the file.
[^1]: See ["Array of Objects" in the ReactJS demo](/docs/demos/frontend/react#array-of-objects)

@ -26,10 +26,11 @@ user-supplied sheets and exports data to XLSX workbooks:
This demo was tested in the following environments:
| Version | Date | Notes |
|:----------------|:-----------|:---------------------|
| `7.0.0-beta.19` | 2024-06-09 | |
| `7.0.0-beta.44` | 2024-06-09 | Editing did not work |
| Browser | Version | Date | Notes |
|:-------------|:----------------|:-----------|:----------------------------|
| Chromium 135 | `7.0.0-beta.19` | 2025-04-23 | Requires ReactJS 18 |
| Chromium 135 | `7.0.0-beta.52` | 2025-04-23 | No edit support |
| Konqueror 22 | `7.0.0-beta.52` | 2025-04-23 | No edit support, CSS errors |
:::
@ -38,7 +39,8 @@ This demo was tested in the following environments:
When this demo was last tested against the latest version, the grid correctly
displayed data but data could not be edited by the user.
The current recommendation is to use version `7.0.0-beta.19`.
The current recommendation is to use version `7.0.0-beta.19` and to forcefully
downgrade ReactJS to version 18.
:::
@ -159,6 +161,18 @@ cd sheetjs-rdg
npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz react-data-grid@7.0.0-beta.19`}
</CodeBlock>
<details>
<summary><b>Installing RDG version that supports editing</b> (click to show)</summary>
Editing support requires ReactJS 18 and React DataGrid version `7.0.0-beta.19`:
<CodeBlock language="bash">{`\
npm i -S react@18 react-dom@18
npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz react-data-grid@7.0.0-beta.19`}
</CodeBlock>
</details>
3) Download [`App.tsx`](pathname:///rdg/App.tsx) and replace `src/App.tsx`.
```bash
@ -174,6 +188,30 @@ npm run dev
The terminal window will display a URL (typically `http://localhost:5173`).
Open the URL with a web browser and confirm that a page loads.
:::caution pass
**There were breaking changes in point releases of React DataGrid!**
The JavaScript console may show an error message referencing `default`:
```
Uncaught SyntaxError: The requested module '/node_modules/.vite/deps/react-data-grid.js?v=f9b1b87a' does not provide an export named 'default' (at App.tsx:2:8)
```
In a point release, `DataGrid` was moved from the default export to a named
export. The `src/App.tsx` script must be edited to reflect the change:
```js title="src/App.tsx (edit highlighted lines)"
import React, { useEffect, useState, ChangeEvent } from "react";
// highlight-next-line
import { textEditor, Column, DataGrid } from "react-data-grid";
import { read, utils, WorkSheet, writeFile } from "xlsx";
```
After updating the script, the webpage must be manually refreshed.
:::
#### Testing
5) Confirm the table shows a list of Presidents.

@ -184,9 +184,10 @@ export default function MUITableSheetJSExport() {
This demo was tested in the following deployments:
| Material UI | Emotion | Date |
|:------------|:----------|:-----------|
| `5.15.20` | `11.11.4` | 2024-06-12 |
| Browser | Material UI | Emotion | Date |
|:-------------|:------------|:----------|:-----------|
| Chromium 135 | `7.0.2` | `11.11.4` | 2025-04-23 |
| Konqueror 22 | `7.0.2` | `11.11.4` | 2025-04-23 |
:::
@ -200,7 +201,7 @@ cd sheetjs-mui
2) Install dependencies:
<CodeBlock language="bash">{`\
npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @mui/material@5.15.20 @emotion/react@11.11.4 @emotion/styled@11.11.5`}
npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @mui/material@7.0.2 @emotion/react@11.11.4 @emotion/styled@11.11.5`}
</CodeBlock>
3) Download [`App.tsx`](pathname:///mui/table/App.tsx) and replace `src/App.tsx`.
@ -215,8 +216,14 @@ curl -L -o src/App.tsx https://docs.sheetjs.com/mui/table/App.tsx
npm run dev
```
The script should open the live demo in a web browser. Click the "Export" button
to save the file. Open the generated file in a spreadsheet editor.
The terminal window will display a URL (typically `http://localhost:5173`).
Open the URL with a web browser and confirm that a page loads.
Confirm the table shows a list of Presidents. When the page loads, it will fetch
https://docs.sheetjs.com/pres.numbers, parse with SheetJS, and load the data in
the data grid.
Click the "Export" button and open the generated file in a spreadsheet editor.
## Material UI Data Grid
@ -330,9 +337,10 @@ export default function App() {
This demo was tested in the following deployments:
| Data Grid | Emotion | Date |
|:----------|:----------|:-----------|
| `7.6.2` | `11.11.4` | 2024-06-12 |
| Browser | Data Grid | Emotion | Date |
|:-------------|:----------|:----------|:-----------|
| Chromium 125 | `8.0.0` | `11.11.4` | 2025-04-23 |
| Konqueror 22 | `8.0.0` | `11.11.4` | 2025-04-23 |
:::
@ -346,7 +354,7 @@ cd sheetjs-muidg
2) Install dependencies:
<CodeBlock language="bash">{`\
npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @mui/x-data-grid@7.6.2 @emotion/react@11.11.4 @emotion/styled@11.11.5`}
npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @mui/x-data-grid@8.0.0 @emotion/react@11.11.4 @emotion/styled@11.11.5`}
</CodeBlock>
3) Download [`App.tsx`](pathname:///mui/dg/App.tsx) and replace `src/App.tsx`.
@ -361,8 +369,30 @@ curl -L -o src/App.tsx https://docs.sheetjs.com/mui/dg/App.tsx
npm run dev
```
The terminal window will display a URL (typically `http://localhost:5173`).
Open the URL with a web browser and confirm that a page loads.
When the page loads, it will process https://docs.sheetjs.com/pres.numbers
:::caution pass
The data grid uses nascent ECMAScript features that are not supported in older
browsers. Shims can be added in the `<head>` section of `index.html`:
```html title="index.html (add highlighted lines in HEAD)"
<head>
<meta charset="UTF-8" />
<!-- highlight-start -->
<script>
/* workarounds for legacy browsers */
if(!Object.hasOwn) Object.hasOwn = function(o, v) { return o.hasOwnProperty(v); };
if(!Array.prototype.at) Array.prototype.at = function(idx) { return this[idx < 0 ? idx + this.length : idx]; };
</script>
<!-- highlight-end -->
```
:::
[^1]: See ["Sheet Objects"](/docs/csf/sheet)
[^2]: See [`sheet_to_json` in "Utilities"](/docs/api/utilities/array#array-output)
[^3]: See [`table_to_book` in "HTML" Utilities](/docs/api/utilities/html#create-new-sheet)

@ -48,7 +48,7 @@ This demo was tested in the following environments:
| Nuxt Content | Nuxt | Date |
|:-------------|:-----------|:-----------|
| `1.15.1` | `2.18.1` | 2024-11-14 |
| `1.15.1` | `2.18.1` | 2025-04-23 |
| `2.13.4` | `3.14.159` | 2024-11-14 |
:::
@ -58,7 +58,7 @@ This demo was tested in the following environments:
Nuxt embeds telemetry. According to the docs, it can be disabled with:
```bash
npx nuxt telemetry disable
npx -y nuxt telemetry disable
```
**When the demo was last tested, this command did not work.**
@ -268,7 +268,7 @@ The recommended solution is to switch to Node 18.
1) Create a stock app:
```bash
npx create-nuxt-app@4.0.0 sheetjs-nuxt
npx -y create-nuxt-app@4.0.0 sheetjs-nuxt
```
When prompted, enter the following options:
@ -412,7 +412,7 @@ This will create a static site in the `dist` folder.
9) Serve the static site:
```bash
npx http-server dist
npx -y http-server dist
```
Access the displayed URL (typically `http://localhost:8080`) in a web browser.

@ -40,6 +40,7 @@ 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 |

@ -12,6 +12,8 @@ sidebar_custom_props:
</head>
import current from '/version.js';
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';
[AlaSQL](https://alasql.org/) is a pure JavaScript in-memory SQL database. It
@ -28,10 +30,12 @@ strategies for general data processing in AlaSQL expressions.
This demo was tested in the following environments:
| Environment | AlaSQL | Date |
|:--------------------|:-------|:----------:|
| NodeJS | 3.1.0 | 2024-06-03 |
| Standalone (Chrome) | 3.1.0 | 2024-06-03 |
| Environment | AlaSQL | Date |
|:-------------|:-------|:----------:|
| Chromium 135 | 3.1.0 | 2025-04-23 |
| Konqueror 22 | 3.1.0 | 2025-04-23 |
| NodeJS | 3.1.0 | 2025-04-23 |
| BunJS | 3.1.0 | 2025-04-23 |
:::
@ -263,8 +267,8 @@ const { promise: alasql } = require("alasql");
1) Create an empty folder for the project:
```bash
mkdir alasql
cd alasql
mkdir sheetjs-alasql
cd sheetjs-alasql
```
2) In the folder, create a stub `package.json` with the `xlsx` override:
@ -279,10 +283,23 @@ cd alasql
3) Install SheetJS and AlaSQL:
<Tabs groupId="ssplat">
<TabItem value="nodejs" label="NodeJS">
<CodeBlock language="bash">{`\
npm i --save alasql@3.1.0 https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`}
</CodeBlock>
</TabItem>
<TabItem value="bun" label="Bun">
<CodeBlock language="bash">{`\
bun i --save alasql@3.1.0 https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`}
</CodeBlock>
</TabItem>
</Tabs>
4) Download the test file https://docs.sheetjs.com/pres.numbers :
```bash
@ -311,11 +328,24 @@ const { promise: alasql } = require("alasql");
6) Run the test script
<Tabs groupId="ssplat">
<TabItem value="nodejs" label="NodeJS">
```bash
node SheetJSAlaSQL.js
```
The output should display:
</TabItem>
<TabItem value="bun" label="Bun">
```bash
bun run SheetJSAlaSQL.js
```
</TabItem>
</Tabs>
The script will print the following array of objects:
```js
[
@ -325,7 +355,7 @@ The output should display:
]
```
The script should generate `SheetJSAlaSQL1.xlsx` with the additional row:
The script will generate `SheetJSAlaSQL1.xlsx` with an additional row:
```csv
Name,Index

@ -274,8 +274,8 @@ const u8 = new Uint8Array(array);
:::danger pass
Not all web APIs are supported in all browsers. For example, Firefox does not
support the "File System Access API".
Not all web APIs are supported in all browsers. For example, Konqueror and
Firefox do not support the "File System Access API".
Even when a browser technically supports a web API, it may be disabled in the
client browser. Some APIs do not give any feedback.
@ -464,16 +464,17 @@ When this demo was last tested, Google Chrome did not add an entry to the
This browser demo was tested in the following environments:
| Browser | Date |
|:------------|:-----------|
| Chrome 131 | 2025-01-07 |
| Browser | Date |
|:-------------|:-----------|
| Chromium 131 | 2025-01-07 |
Some lesser-used browsers do not support File System Access API:
| Browser | Date |
|:------------|:-----------|
| Safari 17.5 | 2025-01-07 |
| Firefox 133 | 2025-01-07 |
| Browser | Date |
|:-------------|:-----------|
| Safari 17.5 | 2025-01-07 |
| Konqueror 22 | 2025-04-23 |
| Firefox 133 | 2025-01-07 |
:::

@ -156,17 +156,18 @@ This workbook is typically exported to the filesystem with `writeFile`[^6].
This browser demo was tested in the following environments:
| Browser | Date |
|:------------|:-----------|
| Chrome 118 | 2025-03-30 |
| Browser | Date |
|:-------------|:-----------|
| Konqueror 22 | 2025-04-23 |
| Chromium 118 | 2025-03-30 |
Browsers that do not support WebSQL will throw errors:
| Browser | Date | Error Message |
|:------------|:-----------|:------------------------------|
| Chrome 133 | 2025-03-30 | `openDatabase is not defined` |
| Safari 18.3 | 2025-03-30 | `Web SQL is deprecated` |
| Firefox 136 | 2025-03-30 | `openDatabase is not defined` |
| Browser | Date | Error Message |
|:-------------|:-----------|:------------------------------|
| Chromium 133 | 2025-03-30 | `openDatabase is not defined` |
| Safari 18.3 | 2025-03-30 | `Web SQL is deprecated` |
| Firefox 136 | 2025-03-30 | `openDatabase is not defined` |
:::

@ -18,10 +18,11 @@ This demo covers two common use patterns:
Each browser demo was tested in the following environments:
| Browser | Date |
|:------------|:-----------|
| Chrome 131 | 2024-12-23 |
| Safari 18.2 | 2024-12-31 |
| Browser | Date |
|:-------------|:-----------|
| Chromium 131 | 2024-12-23 |
| Safari 18.2 | 2024-12-31 |
| Konqueror 22 | 2025-04-23 |
:::

@ -20,10 +20,17 @@ Not all Clipboard APIs offer access to all clipboard types.
Each browser demo was tested in the following environments:
| Browser | Date | Notes
|:------------|:-----------|:-------------------------|
| Chrome 126 | 2024-06-30 | |
| Safari 17.3 | 2024-06-30 | `text/rtf` not supported |
| Browser | Architecture | Date | Notes |
|:-------------|:-------------|:-----------|:--------------------------------|
| Chromium 133 | `darwin-arm` | 2025-04-23 | |
| Safari 17.5 | `darwin-arm` | 2025-04-23 | `text/rtf` not supported |
| Chromium 116 | `win11-arm` | 2025-04-23 | |
| Edge 135 | `win11-arm` | 2025-04-23 | |
| Chromium 135 | `linux-arm` | 2025-04-23 | |
| Konqueror 22 | `linux-arm` | 2025-04-23 | `text/rtf`, files not supported |
Windows and macOS tests were run against Excel, while Linux tests were run
against Gnumeric.
:::

@ -41,10 +41,11 @@ production sites.
This demo was last tested in the following environments:
| Browser | Date | `localForage` |
|:------------|:-----------|:--------------|
| Chrome 131 | 2024-12-31 | `1.10.0` |
| Safari 18.2 | 2024-12-31 | `1.10.0` |
| Browser | Date | `localForage` |
|:-------------|:-----------|:--------------|
| Chromium 131 | 2024-12-31 | `1.10.0` |
| Safari 18.2 | 2024-12-31 | `1.10.0` |
| Konqueror 22 | 2025-04-23 | `1.10.0` |
:::
@ -113,10 +114,11 @@ function SheetJSLocalForage() {
This demo was last tested in the following environments:
| Browser | Date | DexieJS |
|:------------|:-----------|:---------|
| Chrome 131 | 2024-12-31 | `4.0.10` |
| Safari 18.2 | 2024-12-31 | `4.0.10` |
| Browser | Date | DexieJS |
|:-------------|:-----------|:---------|
| Chromium 131 | 2024-12-31 | `4.0.10` |
| Safari 18.2 | 2024-12-31 | `4.0.10` |
| Konqueror 22 | 2025-04-23 | `4.0.10` |
:::

@ -23,9 +23,9 @@ tables with a content script and a background script.
This demo was tested in the following deployments:
| Platform | Date |
|:------------|:-----------|
| Chrome 131 | 2025-01-02 |
| Platform | Date |
|:-------------|:-----------|
| Chromium 131 | 2025-01-02 |
:::

@ -283,10 +283,11 @@ Joseph Biden,46
Each browser demo was tested in the following environments:
| Browser | Date |
|:------------|:-----------|
| Chrome 126 | 2024-07-18 |
| Safari 17.4 | 2024-07-18 |
| Browser | Date |
|:-------------|:-----------|
| Chromium 126 | 2024-07-18 |
| Safari 17.4 | 2024-07-18 |
| Konqueror 22 | 2025-04-23 |
:::

@ -191,13 +191,14 @@ const worker = new Worker(
Each browser demo was tested in the following environments:
| Browser | Date | Comments |
|:------------|:-----------|:----------------------------------------|
| Chrome 131 | 2024-12-31 | |
| Edge 131 | 2024-12-31 | |
| Safari 17.5 | 2024-12-31 | File System Access API is not supported |
| Brave 1.63 | 2024-12-31 | File System Access API is not supported |
| Firefox 133 | 2024-12-31 | File System Access API is not supported |
| Browser | Date | Comments |
|:-------------|:-----------|:----------------------------------------|
| Chromium 131 | 2024-12-31 | |
| Edge 131 | 2024-12-31 | |
| Safari 17.5 | 2024-12-31 | File System Access API is not supported |
| Brave 1.63 | 2024-12-31 | File System Access API is not supported |
| Konqueror 22 | 2025-04-23 | File System Access API is not supported |
| Firefox 133 | 2024-12-31 | File System Access API is not supported |
:::

@ -848,10 +848,13 @@ This demo was tested in the following deployments:
| Architecture | Hermes | Date |
|:-------------|:---------|:-----------|
| `darwin-x64` | `0.13.0` | 2025-03-31 |
| `darwin-arm` | `0.13.0` | 2025-04-23 |
| `win11-x64` | `0.13.0` | 2024-12-20 |
| `win11-arm` | `0.13.0` | 2025-02-23 |
| `linux-x64` | `0.13.0` | 2025-04-21 |
When this demo was last tested, `jsvu` did not support `linux-arm`.
:::
Due to limitations of the standalone binary, this demo will encode a test file

@ -38,7 +38,7 @@ This demo was tested in the following environments:
|:-------------|:----------|:-----------|
| `darwin-x64` | `5020015` | 2025-03-31 |
| `darwin-arm` | `d2d30df` | 2025-02-13 |
| `win11-x64` | `d2d30df` | 2024-12-19 |
| `win11-x64` | `5020015` | 2025-04-23 |
| `win11-arm` | `5020015` | 2025-02-23 |
| `linux-x64` | `5020015` | 2025-04-21 |
| `linux-arm` | `5020015` | 2025-02-15 |

@ -324,7 +324,7 @@ This demo was tested in the following deployments:
|:-------------|:--------|:-----------|
| `darwin-x64` | `1.3.6` | 2025-03-31 |
| `darwin-arm` | `1.3.5` | 2025-02-13 |
| `win11-x64` | `1.3.5` | 2024-12-19 |
| `win11-x64` | `1.3.6` | 2025-04-23 |
| `win11-arm` | `1.3.5` | 2025-02-23 |
| `linux-x64` | `1.3.5` | 2025-01-09 |
| `linux-arm` | `1.3.5` | 2025-02-15 |

@ -178,7 +178,7 @@ This demo was tested in the following deployments:
|:-------------|:---------|:-----------|
| `darwin-x64` | `3.2.9` | 2025-03-31 |
| `darwin-arm` | `3.2.9` | 2025-03-30 |
| `win11-x64` | `3.2.8` | 2024-12-19 |
| `win11-x64` | `3.2.9` | 2025-04-23 |
| `win11-arm` | `3.2.9` | 2025-02-23 |
| `linux-x64` | `3.2.8` | 2025-01-10 |
| `linux-arm` | `3.2.9` | 2025-02-15 |

@ -83,6 +83,7 @@ ExtendScript Toolkit 3.5 is available as a standalone download for Windows.
- Chrome 26+ (including Android 6.0+)
- Safari 8+ (Desktop) and Safari 10+ (iOS)
- Edge 13-18 and 79+
- Konqueror 22
- FF Latest
The automated browser tests seek to test the latest patch version of each major

@ -381,6 +381,7 @@ In previous runs, tests passed in:
- Android Browser versions starting from 5.1
- Safari macOS versions starting from 6
- Edge 13 - 18 and versions starting from 79
- Konqueror 22
Sauce Labs has removed many legacy browser versions over the years. SheetJS LLC
still maintains testing infrastructure for legacy deployments. Questions about

@ -198,7 +198,8 @@ const config = {
{
src: "https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js",
async: true
}
},
"/shim.js"
],
stylesheets: [
{

@ -47,7 +47,6 @@
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}

@ -9,7 +9,7 @@ export default defineTransformer({
extensions: ['.xlsx'],
parse (_id: string, rawContent: string) {
const wb = read(readFileSync(resolve("./content/" + _id.slice(8))));
const body = wb.SheetNames.map(name => ({ name, data: utils.sheet_to_json(wb.Sheets[name])}));
const body = wb.SheetNames.map(name => ({ name, data: utils.sheet_to_json(wb.Sheets[name]!)}));
return { _id, body };
}
});

2
docz/static/shim.js Normal file

@ -0,0 +1,2 @@
/* workaround for legacy browsers */
if(!Object.hasOwn) Object.hasOwn = function(o, v) { return o.hasOwnProperty(v); };

@ -87,7 +87,7 @@ function exportFile(type: string): void {
utils.book_append_sheet(wb, workBook.value[sheet], sheet);
});
writeFile(wb, `sheet.${type}`);
writeFile(wb, `SheetJSVTL.${type}`);
}
function selectSheet(sheet: string): void {

39
tests/data/alasql-bun.sh Executable file

@ -0,0 +1,39 @@
#!/bin/bash
# https://docs.sheetjs.com/docs/demos/data/alasql/#nodejs-example
cd /tmp
mkdir sheetjs-alasql
cd sheetjs-alasql
cat <<EOF >package.json
{
"overrides": {
"xlsx": "https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz"
}
}
EOF
bun i --save alasql@3.1.0 https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz
curl -L -O https://docs.sheetjs.com/pres.numbers
cat <<EOF >SheetJSAlaSQL.js
const { promise: alasql } = require("alasql");
(async() => {
/* read data from spreadsheet to JS */
const data = await alasql(\`
SELECT \\\`Name\\\`, \\\`Index\\\`
FROM XLSX("pres.numbers", {autoExt:false})
WHERE \\\`Index\\\` < 45
\`);
console.log(data);
/* write data from JS to spreadsheet */
data.push({ Name: "SheetJS Dev", Index: 47 });
await alasql(\`SELECT * INTO XLSX("SheetJSAlaSQL1.xlsx") FROM ?\`, [data]);
})();
EOF
bun run SheetJSAlaSQL.js
bunx xlsx-cli SheetJSAlaSQL1.xlsx

39
tests/data/alasql-node.sh Executable file

@ -0,0 +1,39 @@
#!/bin/bash
# https://docs.sheetjs.com/docs/demos/data/alasql/#nodejs-example
cd /tmp
mkdir sheetjs-alasql
cd sheetjs-alasql
cat <<EOF >package.json
{
"overrides": {
"xlsx": "https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz"
}
}
EOF
npm i --save alasql@3.1.0 https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz
curl -L -O https://docs.sheetjs.com/pres.numbers
cat <<EOF >SheetJSAlaSQL.js
const { promise: alasql } = require("alasql");
(async() => {
/* read data from spreadsheet to JS */
const data = await alasql(\`
SELECT \\\`Name\\\`, \\\`Index\\\`
FROM XLSX("pres.numbers", {autoExt:false})
WHERE \\\`Index\\\` < 45
\`);
console.log(data);
/* write data from JS to spreadsheet */
data.push({ Name: "SheetJS Dev", Index: 47 });
await alasql(\`SELECT * INTO XLSX("SheetJSAlaSQL1.xlsx") FROM ?\`, [data]);
})();
EOF
node SheetJSAlaSQL.js
npx xlsx-cli SheetJSAlaSQL1.xlsx