diff --git a/README.md b/README.md index 3fcf546..1317316 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,55 @@ $ make spell # spell check (.spelling custom dictionary) $ make graph # build format graph and legend ``` +### Documentation Markup + +The original documentation used [GFM](https://github.github.com/gfm/). + +Pages currently use MDX v1. + +
+ MDX Notes (click to show) + +**Multi-line tags** + +Markdown and MDX v1 accept the following: + +``` +
MDX Notes (click to show) + +Note + +
+``` + +This is no longer valid in MDX v2. The `` part must be separated: + +``` +
+ MDX Notes (click to show) + +Note + +
+``` + +**Shortlinks** + +Markdown and MDX v1 support shortlinks: + +``` +Scripts are available at +``` + +This is no longer valid in MDX v2. Autolinks should be used: + +``` +Scripts are available at https://cdn.sheetjs.com +``` + +
+ + ### Engine Compatibility Tables `docz/src/data/engines.xls` is an XLML workbook that controls the compatibility diff --git a/docz/docs/02-getting-started/01-installation/01-standalone.mdx b/docz/docs/02-getting-started/01-installation/01-standalone.mdx index bcf7d49..088d632 100644 --- a/docz/docs/02-getting-started/01-installation/01-standalone.mdx +++ b/docz/docs/02-getting-started/01-installation/01-standalone.mdx @@ -11,7 +11,7 @@ import CodeBlock from '@theme/CodeBlock'; # Standalone Browser Scripts -Each standalone release script is available at . +Each standalone release script is available at https://cdn.sheetjs.com/.

The current version is {current} and can be referenced as follows:

@@ -33,7 +33,7 @@ new versions are released! A number of services host older versions of the SheetJS libraries. Due to syncing issues, they are generally out of date. -**The SheetJS CDN** **is the authoritative source** +**The SheetJS CDN** https://cdn.sheetjs.com/ **is the authoritative source** **for SheetJS scripts** ::: @@ -54,7 +54,8 @@ A slimmer build is generated at `dist/xlsx.mini.min.js`. Compared to full build: - no support for XLSB / XLS / Lotus 1-2-3 / SpreadsheetML 2003 / Numbers - node stream utils removed -
How to integrate the mini build (click to show) +
+ How to integrate the mini build (click to show) Replace references to `xlsx.full.min.js` with `xlsx.mini.min.js`. Starting from scratch, a single script tag should be added at the top of the HTML page: diff --git a/docz/docs/02-getting-started/01-installation/02-frameworks.md b/docz/docs/02-getting-started/01-installation/02-frameworks.md index 9d57fd3..aa32e56 100644 --- a/docz/docs/02-getting-started/01-installation/02-frameworks.md +++ b/docz/docs/02-getting-started/01-installation/02-frameworks.md @@ -13,7 +13,7 @@ import CodeBlock from '@theme/CodeBlock'; # Frameworks and Bundlers -Each standalone release package is available at . The +Each standalone release package is available at https://cdn.sheetjs.com/. The NodeJS package is designed to be used with frameworks and bundlers. It is a proper ECMAScript Module release which can be optimized with developer tools. @@ -88,7 +88,7 @@ but the registry is out of date. The latest version on that registry is 0.18.5 This is a known registry bug -**The SheetJS CDN** **is the authoritative source** +**The SheetJS CDN** https://cdn.sheetjs.com/ **is the authoritative source** **for SheetJS modules.** For existing projects, the easiest approach is to uninstall and reinstall: diff --git a/docz/docs/02-getting-started/01-installation/03-nodejs.md b/docz/docs/02-getting-started/01-installation/03-nodejs.md index f1565d2..ecdcb5e 100644 --- a/docz/docs/02-getting-started/01-installation/03-nodejs.md +++ b/docz/docs/02-getting-started/01-installation/03-nodejs.md @@ -12,7 +12,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; -Package tarballs are available on . +Package tarballs are available on https://cdn.sheetjs.com.

https://cdn.sheetjs.com/xlsx-{current}/xlsx-{current}.tgz is the URL for version {current}

@@ -77,7 +77,7 @@ but the registry is out of date. The latest version on that registry is 0.18.5 This is a known registry bug -**The SheetJS CDN** **is the authoritative source** +**The SheetJS CDN** https://cdn.sheetjs.com/ **is the authoritative source** **for SheetJS modules.** For existing projects, the easiest approach is to uninstall and reinstall: diff --git a/docz/docs/02-getting-started/01-installation/04-amd.md b/docz/docs/02-getting-started/01-installation/04-amd.md index 3f09842..58e7ef8 100644 --- a/docz/docs/02-getting-started/01-installation/04-amd.md +++ b/docz/docs/02-getting-started/01-installation/04-amd.md @@ -11,7 +11,7 @@ import CodeBlock from '@theme/CodeBlock'; # AMD (define) -Each standalone release script is available at . +Each standalone release script is available at https://cdn.sheetjs.com/. `xlsx.full.min.js` supports AMD with name `xlsx` out of the box. diff --git a/docz/docs/02-getting-started/01-installation/05-extendscript.md b/docz/docs/02-getting-started/01-installation/05-extendscript.md index 4c0ff9a..c10ef90 100644 --- a/docz/docs/02-getting-started/01-installation/05-extendscript.md +++ b/docz/docs/02-getting-started/01-installation/05-extendscript.md @@ -10,7 +10,7 @@ import current from '/version.js'; # ExtendScript -Each standalone release script is available at . +Each standalone release script is available at https://cdn.sheetjs.com/. `xlsx.extendscript.js` is an ExtendScript build for Photoshop and InDesign. diff --git a/docz/docs/02-getting-started/01-installation/06-deno.md b/docz/docs/02-getting-started/01-installation/06-deno.md index 44c68fe..077b9ea 100644 --- a/docz/docs/02-getting-started/01-installation/06-deno.md +++ b/docz/docs/02-getting-started/01-installation/06-deno.md @@ -13,7 +13,7 @@ import CodeBlock from '@theme/CodeBlock'; # Deno -Module scripts and type definitions are available at . +Module scripts and type definitions are available at https://cdn.sheetjs.com/. Using the URL imports, `deno run` will automatically download scripts and types: @@ -72,7 +72,7 @@ and the types URLs should be updated at the same time: The official Deno registry is out of date. This is a registry bug. -**The SheetJS CDN** **is the authoritative source** +**The SheetJS CDN** https://cdn.sheetjs.com/ **is the authoritative source** **for SheetJS modules.** ::: diff --git a/docz/docs/02-getting-started/01-installation/07-bun.md b/docz/docs/02-getting-started/01-installation/07-bun.md index 3b1151d..764574f 100644 --- a/docz/docs/02-getting-started/01-installation/07-bun.md +++ b/docz/docs/02-getting-started/01-installation/07-bun.md @@ -12,7 +12,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; -Package tarballs are available on . +Package tarballs are available on https://cdn.sheetjs.com.

https://cdn.sheetjs.com/xlsx-{current}/xlsx-{current}.tgz is the URL for version {current}

diff --git a/docz/docs/02-getting-started/01-installation/index.md b/docz/docs/02-getting-started/01-installation/index.md index d2b5ca9..4e131eb 100644 --- a/docz/docs/02-getting-started/01-installation/index.md +++ b/docz/docs/02-getting-started/01-installation/index.md @@ -8,7 +8,7 @@ title: Installation import DocCardList from '@theme/DocCardList'; import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; - is the primary software distribution site. Please +https://cdn.sheetjs.com is the primary software distribution site. Please read the installation instructions for your use case:
    {useCurrentSidebarCategory().items.map((item, index) => { diff --git a/docz/docs/02-getting-started/02-examples/02-export.mdx b/docz/docs/02-getting-started/02-examples/02-export.mdx index 67b4fc6..7706687 100644 --- a/docz/docs/02-getting-started/02-examples/02-export.mdx +++ b/docz/docs/02-getting-started/02-examples/02-export.mdx @@ -43,7 +43,7 @@ sequenceDiagram ## Acquire Data The raw data is available in JSON form[^1]. It has been mirrored at - +https://sheetjs.com/data/executive.json ### Raw Data @@ -54,7 +54,8 @@ const url = "https://sheetjs.com/data/executive.json"; const raw_data = await (await fetch(url)).json(); ``` -
    Code Explanation (click to show) +
    + Code Explanation (click to show) `fetch` is a low-level API for downloading data from an endpoint. It separates the network step from the response parsing step. @@ -176,7 +177,8 @@ the code in more detail. ::: -
    Code Explanation (click to show) +
    + Code Explanation (click to show) **Verifying if a person was a US President** @@ -234,7 +236,8 @@ represents the start of the first presidential term. prez.forEach(row => row.start = row.terms.find(term => term.type === "prez").start); ``` -
    Code Explanation (click to show) +
    + Code Explanation (click to show) **Finding the first presidential term** @@ -304,7 +307,8 @@ At this point, each row in the `prez` array has a `start` property. Since the prez.sort((l,r) => l.start.localeCompare(r.start)); ``` -
    Code Explanation (click to show) +
    + Code Explanation (click to show) **Comparator Functions and Relative Ordering in JavaScript** @@ -370,7 +374,8 @@ const rows = prez.map(row => ({ })); ``` -
    Code Explanation (click to show) +
    + Code Explanation (click to show) **Wrangling One Data Row** @@ -492,7 +497,8 @@ cell styling and frozen rows. ::: -
    Changing Header Names (click to show) +
    + Changing Header Names (click to show) By default, `json_to_sheet` creates a worksheet with a header row. In this case, the headers come from the JS object keys: "name" and "birthday". @@ -506,7 +512,8 @@ XLSX.utils.sheet_add_aoa(worksheet, [["Name", "Birthday"]], { origin: "A1" });
    -
    Changing Column Widths (click to show) +
    + Changing Column Widths (click to show) Some of the names are longer than the default column width. Column widths are set by setting the `"!cols"` worksheet property.[^7] @@ -581,7 +588,7 @@ function Presidents() { return ( ); } ``` - is a hosted version of this demo. +https://sheetjs.com/pres.html is a hosted version of this demo. ## Run the Demo Locally @@ -730,7 +737,8 @@ Native `fetch` support was added in NodeJS 18. For older versions of NodeJS, the script will throw an error `fetch is not defined`. A third-party library like `axios` presents a similar API for fetching data: -
    Example using axios (click to show) +
    + Example using axios (click to show) Install the dependencies: @@ -793,7 +801,8 @@ This script will write a new file `Presidents.xlsx` in the same folder. ::: -
    Other Server-Side Platforms (click to show) +
    + Other Server-Side Platforms (click to show) @@ -1161,7 +1170,7 @@ see a preview of the data. The Numbers app can open the file. -[^1]: is the +[^1]: https://theunitedstates.io/congress-legislators/executive.json is the original location of the example dataset. The contributors to the dataset dedicated the content to the public domain. [^2]: See ["The Executive Branch"](https://github.com/unitedstates/congress-legislators#the-executive-branch) diff --git a/docz/docs/02-getting-started/02-examples/04-import.md b/docz/docs/02-getting-started/02-examples/04-import.md index fea541b..b528ec9 100644 --- a/docz/docs/02-getting-started/02-examples/04-import.md +++ b/docz/docs/02-getting-started/02-examples/04-import.md @@ -42,7 +42,7 @@ sequenceDiagram ## Download File The raw data is available in a XLS workbook[^1]. It has been mirrored at - +https://sheetjs.com/data/PortfolioSummary.xls :::info pass @@ -60,7 +60,8 @@ const url = "https://sheetjs.com/data/PortfolioSummary.xls"; const file = await (await fetch(url)).arrayBuffer(); ``` -
    Code Explanation (click to show) +
    + Code Explanation (click to show) `fetch` is a low-level API for downloading data from an endpoint. It separates the network step from the response parsing step. @@ -211,7 +212,8 @@ recommended to use utility functions to present JS-friendly data structures. The `sheet_to_html` utility function[^7] generates an HTML table from worksheet objects. The following live example shows the first 20 rows of data in a table: -
    Live example (click to show) +
    + Live example (click to show) :::info pass @@ -306,7 +308,8 @@ will have holes in cells `A14:A16` (written as `null`): [null, "Q4", 609.1, 25.6, 423, 20.9, 8.1, 2.9, 1040.2, 39.6] ``` -
    Live example (click to show) +
    + Live example (click to show) ```jsx live function SheetJSAoAHoles() { @@ -346,7 +349,8 @@ the code in more detail. ::: -
    Code Explanation (click to show) +
    + Code Explanation (click to show) **Analyzing every row in the dataset** @@ -455,7 +459,8 @@ After post-processing, the rows now have proper year fields: [2013, "Q4", 609.1, 25.6, 423, 20.9, 8.1, 2.9, 1040.2, 39.6] ``` -
    Live example (click to show) +
    + Live example (click to show) ```jsx live function SheetJSAoAFilled() { @@ -491,7 +496,8 @@ is between 2007 and 2023, `Array#filter` can be used to select the rows: const rows = raw_data.filter(r => r[0] >= 2007 && r[0] <= 2023); ``` -
    Live example (click to show) +
    + Live example (click to show) ```jsx live function SheetJSAoAFiltered() { @@ -526,7 +532,8 @@ Looking at the headers: The desired data is in column `I`. The column index can be calculated using `XLSX.utils.decode_col`[^11]. -
    Column Index calculation (click to show) +
    + Column Index calculation (click to show) ```jsx live function SheetJSDecodeCol() { @@ -565,7 +572,8 @@ following row: { "FY": 2016, "FQ": "Q1", "total": 1220.3 } ``` -
    Live example (click to show) +
    + Live example (click to show) ```jsx live function SheetJSObjects() { @@ -617,7 +625,7 @@ best presented in simple HTML tables[^12]: ### Vanilla JS - is a hosted version of this demo. +https://sheetjs.com/sl.html is a hosted version of this demo. Without a framework, HTML table row elements can be programmatically created with `document.createElement` and added to the table body element. For example, diff --git a/docz/docs/02-getting-started/index.md b/docz/docs/02-getting-started/index.md index ca03c3c..753cb56 100644 --- a/docz/docs/02-getting-started/index.md +++ b/docz/docs/02-getting-started/index.md @@ -19,8 +19,8 @@ deployments and use cases. ## Installation - is the primary software distribution site. Please -read the installation instructions for your use case: +https://cdn.sheetjs.com is the primary software distribution site. Please read +the installation instructions for your use case:
      {useCurrentSidebarCategory().items.map((item, index) => { if(item.label != "Installation") return ""; diff --git a/docz/docs/03-demos/01-math/01-summary.md b/docz/docs/03-demos/01-math/01-summary.md index d596f0c..3e10e33 100644 --- a/docz/docs/03-demos/01-math/01-summary.md +++ b/docz/docs/03-demos/01-math/01-summary.md @@ -382,7 +382,8 @@ function aoa_average_of_key(aoo, key) { } ``` -
      Live Demo (click to show) +
      + Live Demo (click to show) ```jsx live function SheetJSAoOAverageKey() { @@ -437,7 +438,8 @@ function ws_average_of_col(ws, C) { } ``` -
      Live Demo (click to show) +
      + Live Demo (click to show) ```jsx live function SheetJSDenseAverageKey() { @@ -511,7 +513,8 @@ The van Reeken array mean can be implemented in one line of JavaScript code: for(var n = 1, mean = 0; n <= x.length; ++n) mean += (x[n-1] - mean)/n; ``` -
      Math details (click to show) +
      + Math details (click to show) Let $M[x;m] = \frac{1}{m}\sum_{i=1}^{m}x_m$ be the mean of the first $m$ elements. Then: @@ -592,7 +595,8 @@ function aoa_mean_of_key(aoo, key) { } ``` -
      Live Demo (click to show) +
      + Live Demo (click to show) ```jsx live function SheetJSAoOMeanKey() { @@ -647,7 +651,8 @@ function ws_mean_of_col(ws, C) { } ``` -
      Live Demo (click to show) +
      + Live Demo (click to show) ```jsx live function SheetJSDenseMeanKey() { diff --git a/docz/docs/03-demos/01-math/11-tensorflow.md b/docz/docs/03-demos/01-math/11-tensorflow.md index bdfbd39..6d1e4a0 100644 --- a/docz/docs/03-demos/01-math/11-tensorflow.md +++ b/docz/docs/03-demos/01-math/11-tensorflow.md @@ -118,7 +118,7 @@ flowchart LR The demo builds a model for predicting MPG from Horsepower data. It: -- fetches +- fetches https://sheetjs.com/data/cd.xls - parses the data with the SheetJS `read`[^4] method - selects the first worksheet[^5] and converts to CSV using `sheet_to_csv`[^6] - generates a blob URL from the CSV text @@ -126,7 +126,8 @@ The demo builds a model for predicting MPG from Horsepower data. It: - builds a model and trains with `fitDataset`[^8] - predicts MPG from a set of sample inputs and displays results in a table -
      Live Demo (click to show) +
      + Live Demo (click to show) :::caution pass diff --git a/docz/docs/03-demos/01-math/index.md b/docz/docs/03-demos/01-math/index.md index 92ecd3e..4e3e285 100644 --- a/docz/docs/03-demos/01-math/index.md +++ b/docz/docs/03-demos/01-math/index.md @@ -32,7 +32,8 @@ Demos for various libraries are included in separate pages: Modern JavaScript math and statistics libraries typically use `Float64Array` or `Float32Array` objects to efficiently store data variables. -
      Technical details (click to show) +
      + Technical details (click to show) Under the hood, `ArrayBuffer` objects represent raw binary data. "Typed arrays" such as `Float64Array` and `Float32Array` are objects designed for efficient @@ -140,7 +141,8 @@ for(let R = 1; R < aoa.length; ++R) { } ``` -
      Live Demo (click to show) +
      + Live Demo (click to show) This example fetches and parses [`iris.xlsx`](pathname:///typedarray/iris.xlsx). The first worksheet is processed and the new data and mapping are printed. @@ -293,7 +295,8 @@ XLSX.utils.sheet_add_aoa(ws, [ arr ], { origin: "B1" }); ![Typed Array to single row with title](pathname:///typedarray/ta-row.png) -
      Live Demo (click to hide) +
      + Live Demo (click to hide) In this example, two typed arrays are exported. `aoa_to_sheet` creates the worksheet and `sheet_add_aoa` will add the data to the sheet. @@ -375,7 +378,8 @@ XLSX.utils.sheet_add_aoa(ws, arr, { origin: "A2" }); ![Typed Array to single column with title](pathname:///typedarray/ta-col.png) -
      Live Demo (click to hide) +
      + Live Demo (click to hide) In this example, two typed arrays are exported. `aoa_to_sheet` creates the worksheet and `sheet_add_aoa` will add the data to the sheet. diff --git a/docz/docs/03-demos/02-frontend/01-kaioken.md b/docz/docs/03-demos/02-frontend/01-kaioken.md index 9b5d8d6..f44a8f8 100644 --- a/docz/docs/03-demos/02-frontend/01-kaioken.md +++ b/docz/docs/03-demos/02-frontend/01-kaioken.md @@ -314,7 +314,8 @@ export default function SheetJSKaiokenAoO() { } ``` -
      How to run the example (click to hide) +
      + How to run the example (click to hide) @@ -410,7 +411,7 @@ and test the page. -When the page loads, the app will fetch and +When the page loads, the app will fetch https://sheetjs.com/pres.xlsx and display the data from the first worksheet in a TABLE. The "Export XLSX" button will generate a workbook that can be opened in a spreadsheet editor. @@ -468,7 +469,8 @@ export default function SheetJSKaiokenHTML() { } ``` -
      How to run the example (click to hide) +
      + How to run the example (click to hide) @@ -564,7 +566,7 @@ and test the page. -When the page loads, the app will fetch and +When the page loads, the app will fetch https://sheetjs.com/pres.xlsx and display the data from the first worksheet in a TABLE. The "Export XLSX" button will generate a workbook that can be opened in a spreadsheet editor. diff --git a/docz/docs/03-demos/02-frontend/02-react.md b/docz/docs/03-demos/02-frontend/02-react.md index 6212982..93ff8b1 100644 --- a/docz/docs/03-demos/02-frontend/02-react.md +++ b/docz/docs/03-demos/02-frontend/02-react.md @@ -317,7 +317,8 @@ export default function SheetJSReactAoO() { } ``` -
      How to run the example (click to hide) +
      + How to run the example (click to hide) @@ -541,7 +542,7 @@ and test the page. -When the page loads, the app will fetch and +When the page loads, the app will fetch https://sheetjs.com/pres.xlsx and display the data from the first worksheet in a TABLE. The "Export XLSX" button will generate a workbook that can be opened in a spreadsheet editor. @@ -600,7 +601,8 @@ export default function SheetJSReactHTML() { } ``` -
      How to run the example (click to hide) +
      + How to run the example (click to hide) @@ -709,7 +711,7 @@ and test the page. -When the page loads, the app will fetch and +When the page loads, the app will fetch https://sheetjs.com/pres.xlsx and display the data from the first worksheet in a TABLE. The "Export XLSX" button will generate a workbook that can be opened in a spreadsheet editor. diff --git a/docz/docs/03-demos/02-frontend/03-angular.md b/docz/docs/03-demos/02-frontend/03-angular.md index 254b47b..e217e5f 100644 --- a/docz/docs/03-demos/02-frontend/03-angular.md +++ b/docz/docs/03-demos/02-frontend/03-angular.md @@ -414,7 +414,8 @@ export class AppComponent { -
      How to run the example (click to hide) +
      + How to run the example (click to hide) :::note Tested Deployments @@ -607,7 +608,8 @@ export class AppComponent { -
      How to run the example (click to hide) +
      + How to run the example (click to hide) :::note Tested Deployments @@ -1034,7 +1036,7 @@ will have an `ng-version` attribute. npm run build ``` -[^1]: The main website for Angular versions 2-16 is . The project moved to a new domain during the Angular 17 launch. +[^1]: The main website for Angular versions 2-16 is https://angular.io/ . The project moved to a new domain https://angular.dev/ during the Angular 17 launch. [^2]: See `OnInit` in the [Angular 2-16 docs](https://angular.io/api/core/OnInit) or [Angular 17 docs](https://angular.dev/guide/components/lifecycle#ngoninit) [^3]: See [`ngFor`](https://angular.io/api/common/NgFor) in the Angular 2-16 docs. [^4]: See [`@for`](https://angular.dev/api/core/@for) in the Angular 17 docs. diff --git a/docz/docs/03-demos/02-frontend/04-vue.md b/docz/docs/03-demos/02-frontend/04-vue.md index 20ad5d9..f5011e2 100644 --- a/docz/docs/03-demos/02-frontend/04-vue.md +++ b/docz/docs/03-demos/02-frontend/04-vue.md @@ -345,7 +345,8 @@ function exportFile() { ``` -
      How to run the example (click to hide) +
      + How to run the example (click to hide) @@ -505,7 +506,8 @@ function exportFile() { ``` -
      How to run the example (click to hide) +
      + How to run the example (click to hide) diff --git a/docz/docs/03-demos/02-frontend/05-svelte.md b/docz/docs/03-demos/02-frontend/05-svelte.md index f34437f..123f2e5 100644 --- a/docz/docs/03-demos/02-frontend/05-svelte.md +++ b/docz/docs/03-demos/02-frontend/05-svelte.md @@ -128,7 +128,8 @@ function exportFile() { ``` -
      How to run the example (click to hide) +
      + How to run the example (click to hide) :::note Tested Deployments @@ -227,7 +228,8 @@ function exportFile() { ``` -
      How to run the example (click to hide) +
      + How to run the example (click to hide) :::note Tested Deployments diff --git a/docz/docs/03-demos/02-frontend/07-angularjs.md b/docz/docs/03-demos/02-frontend/07-angularjs.md index c70c5ea..e02830d 100644 --- a/docz/docs/03-demos/02-frontend/07-angularjs.md +++ b/docz/docs/03-demos/02-frontend/07-angularjs.md @@ -235,7 +235,8 @@ $scope.exportSheetJS = function() { }; ``` -
      Complete Example (click to show) +
      + Complete Example (click to show) 1) Save the following to `index.html`: @@ -336,7 +337,8 @@ The HTML table can be directly exported with [`table_to_book`](/docs/api/utiliti }; ``` -
      Complete Example (click to show) +
      + Complete Example (click to show) 1) Save the following to `index.html`: diff --git a/docz/docs/03-demos/02-frontend/08-dojo.md b/docz/docs/03-demos/02-frontend/08-dojo.md index 3f6c4c1..37b90ec 100644 --- a/docz/docs/03-demos/02-frontend/08-dojo.md +++ b/docz/docs/03-demos/02-frontend/08-dojo.md @@ -63,7 +63,7 @@ The official Google CDN does not have the newest releases of Dojo Toolkit **This is a known Google CDN bug.** -The script was fetched from the official +The script https://docs.sheetjs.com/dojo/dojo.js was fetched from the official `1.17.3` uncompressed release artifact[^1]. ::: @@ -201,5 +201,5 @@ function export_all_data_from_store(store) { } ``` -[^1]: All Dojo Toolkit releases are available at . The mirrored `dojo.js` corresponds to the `1.17.3` uncompressed script . +[^1]: All Dojo Toolkit releases are available at https://download.dojotoolkit.org/. The mirrored `dojo.js` corresponds to the `1.17.3` uncompressed script http://download.dojotoolkit.org/release-1.17.3/dojo.js.uncompressed.js. [^2]: See [`dojo/store`](https://dojotoolkit.org/reference-guide/dojo/store.html) in the Dojo Toolkit documentation. \ No newline at end of file diff --git a/docz/docs/03-demos/02-frontend/09-legacy.md b/docz/docs/03-demos/02-frontend/09-legacy.md index f81f4ae..ec52da5 100644 --- a/docz/docs/03-demos/02-frontend/09-legacy.md +++ b/docz/docs/03-demos/02-frontend/09-legacy.md @@ -48,7 +48,8 @@ The SheetJS testing grid still includes IE and should work. The modern upload and download strategies are not available in older versions of IE, but there are approaches using ActiveX or Flash. -
      Complete Example (click to show) +
      + Complete Example (click to show) This demo includes all of the support files for the Flash and ActiveX methods. @@ -76,7 +77,8 @@ npx -y http-server .
      -
      Other Live Demos (click to show) +
      + Other Live Demos (click to show) :::caution pass @@ -85,10 +87,10 @@ demo pages should be downloaded and hosted using a simple HTTP server. ::: - uses XMLHttpRequest to download test +https://oss.sheetjs.com/sheetjs/ajax.html uses XMLHttpRequest to download test files and convert to CSV - demonstrates reading files with `FileReader`. +https://oss.sheetjs.com/sheetjs/ demonstrates reading files with `FileReader`. Older versions of IE do not support HTML5 File API but do support Base64. @@ -214,7 +216,8 @@ This demo was tested in the following environments: ::: -
      Full Exposition (click to show) +
      + Full Exposition (click to show) **State** diff --git a/docz/docs/03-demos/02-frontend/19-bundler/20-parcel.md b/docz/docs/03-demos/02-frontend/19-bundler/20-parcel.md index 4d21824..9bda304 100644 --- a/docz/docs/03-demos/02-frontend/19-bundler/20-parcel.md +++ b/docz/docs/03-demos/02-frontend/19-bundler/20-parcel.md @@ -128,7 +128,8 @@ document.getElementById("xport").onclick = async() => { For ParcelJS version 1, the entire script should be copied to `index.js` and the main `index.html` page should load the `index.js` script: -
      ParcelJS v1 example (click to show) +
      + ParcelJS v1 example (click to show) ```html title="index.html" diff --git a/docz/docs/03-demos/02-frontend/19-bundler/index.md b/docz/docs/03-demos/02-frontend/19-bundler/index.md index b53cfde..f4b4e01 100644 --- a/docz/docs/03-demos/02-frontend/19-bundler/index.md +++ b/docz/docs/03-demos/02-frontend/19-bundler/index.md @@ -45,7 +45,8 @@ Complete Examples are included [in the "Dojo" demo](/docs/demos/frontend/dojo) Snowpack works with no caveats. -
      Complete Example (click to show) +
      + Complete Example (click to show) :::note Tested Deployments @@ -166,7 +167,8 @@ Click on "Click here to export" to generate a file. WMR works with no caveats. -
      Complete Example (click to show) +
      + Complete Example (click to show) :::note Tested Deployments diff --git a/docz/docs/03-demos/03-net/01-network/index.mdx b/docz/docs/03-demos/03-net/01-network/index.mdx index 2718803..bbc9d57 100644 --- a/docz/docs/03-demos/03-net/01-network/index.mdx +++ b/docz/docs/03-demos/03-net/01-network/index.mdx @@ -71,7 +71,7 @@ const wb = XLSX.read(ab); ## Browser Demos -When the page is accessed, the browser will attempt to download +When the page is accessed, the browser will attempt to download https://sheetjs.com/pres.numbers and read the workbook. The old table will be replaced with a table whose contents match the first worksheet. The table is generated using the SheetJS `sheet_to_html` method[^2] @@ -108,9 +108,10 @@ req.onload = function(e) { req.send(); ``` -
      Live Download demo (click to show) +
      + Live Download demo (click to show) -This demo uses `XMLHttpRequest` to download +This demo uses `XMLHttpRequest` to download https://sheetjs.com/pres.numbers and show the data in an HTML table. ```jsx live @@ -160,9 +161,10 @@ fetch(url).then(function(res) { }); ``` -
      Live Download demo (click to show) +
      + Live Download demo (click to show) -This demo uses `fetch` to download and show +This demo uses `fetch` to download https://sheetjs.com/pres.numbers and show the data in an HTML table. ```jsx live @@ -254,9 +256,10 @@ async function workbook_dl_axios(url) { } ``` -
      Live Download demo (click to show) +
      + Live Download demo (click to show) -This demo uses `axios` to download and show +This demo uses `axios` to download https://sheetjs.com/pres.numbers and show the data in an HTML table. :::caution pass @@ -315,9 +318,10 @@ superagent }); ``` -
      Live Download demo (click to show) +
      + Live Download demo (click to show) -This demo uses `superagent` to download and +This demo uses `superagent` to download https://sheetjs.com/pres.numbers and show the data in an HTML table. :::caution pass @@ -384,7 +388,8 @@ https.get('https://sheetjs.com/pres.numbers', function(res) { }); ``` -
      Complete Example (click to show) +
      + Complete Example (click to show) :::note Tested Environments @@ -431,7 +436,8 @@ async function parse_from_url(url) { } ``` -
      Complete Example (click to show) +
      + Complete Example (click to show) :::note Tested Environments @@ -510,7 +516,8 @@ request(url, {encoding: null}, function(err, res, data) { }); ``` -
      Complete Example (click to show) +
      + Complete Example (click to show) :::note Tested Environments @@ -552,7 +559,8 @@ async function workbook_dl_axios(url) { } ``` -
      Complete Example (click to show) +
      + Complete Example (click to show) :::note Tested Environments diff --git a/docz/docs/03-demos/03-net/02-upload/index.mdx b/docz/docs/03-demos/03-net/02-upload/index.mdx index 86f9103..2dfd67a 100644 --- a/docz/docs/03-demos/03-net/02-upload/index.mdx +++ b/docz/docs/03-demos/03-net/02-upload/index.mdx @@ -114,7 +114,7 @@ fdata.append('file', file); This demo explores a number of APIs and libraries for making POST requests. Each approach will upload data stored in `FormData` objects. -This snippet uses `XMLHttpRequest` to upload data to : +This snippet uses `XMLHttpRequest` to upload data to https://s2c.sheetjs.com: ```js title="Uploading Form Data with XMLHttpRequest" /* send data using XMLHttpRequest */ @@ -126,7 +126,7 @@ req.send(fdata); ## Browser Demos When the upload button is clicked, the browser will build up a new workbook, -generate a XLSX file, upload it to and show the +generate a XLSX file, upload it to https://s2c.sheetjs.com and show the response. If the process was successful, a HTML table will be displayed :::note Tested Deployments @@ -142,7 +142,7 @@ Each browser demo was tested in the following environments: #### Test Server -The service is currently hosted on Deno Deploy. The +The https://s2c.sheetjs.com service is currently hosted on Deno Deploy. The ["Deno Deploy" demo](/docs/demos/cloud/deno#demo) covers the exact steps for deploying the service. @@ -162,7 +162,8 @@ req.open("POST", "https://s2c.sheetjs.com", true); req.send(fdata); ``` -
      Complete Code Snippet (click to show) +
      + Complete Code Snippet (click to show) ```js title="SheetJS + XMLHttpRequest example" /* create sample SheetJS workbook object */ @@ -190,10 +191,11 @@ req.send(fdata);
      -
      Live demo (click to show) +
      + Live demo (click to show) This demo starts from an array of arrays of data. When the button is clicked, a -workbook file will be generated and uploaded to . The +workbook file will be generated and uploaded to https://s2c.sheetjs.com. The service will return a HTML table. ```jsx live @@ -263,7 +265,8 @@ function SheetJSXHRUL() { fetch("https://s2c.sheetjs.com", { method: "POST", body: fdata }); ``` -
      Complete Code Snippet (click to show) +
      + Complete Code Snippet (click to show) ```js title="SheetJS + fetch example" /* create sample SheetJS workbook object */ @@ -289,9 +292,10 @@ fetch("https://s2c.sheetjs.com", { method: "POST", body: fdata });
      -
      Live demo (click to show) +
      + Live demo (click to show) -This demo uses `fetch` to upload data to . It will parse +This demo uses `fetch` to upload data to https://s2c.sheetjs.com. It will parse the workbook and return an HTML table. ```jsx live @@ -364,7 +368,8 @@ Uploading form data is nearly identical to the `fetch` example: axios("https://s2c.sheetjs.com", { method: "POST", body: fdata }); ``` -
      Complete Code Snippet (click to show) +
      + Complete Code Snippet (click to show) ```js title="SheetJS + axios example" /* create sample SheetJS workbook object */ @@ -390,9 +395,10 @@ axios("https://s2c.sheetjs.com", { method: "POST", data: fdata });
      -
      Live demo (click to show) +
      + Live demo (click to show) -This demo uses `axios` to upload data to . It will parse +This demo uses `axios` to upload data to https://s2c.sheetjs.com. It will parse the workbook and return an HTML table. :::caution pass @@ -472,7 +478,8 @@ The `send` method accepts a `FormData` object as the first argument: superagent.post("https://s2c.sheetjs.com").send(fd); ``` -
      Complete Code Snippet (click to show) +
      + Complete Code Snippet (click to show) ```js title="SheetJS + superagent example" /* create sample SheetJS workbook object */ @@ -498,9 +505,10 @@ superagent.post("https://s2c.sheetjs.com").send(fd);
      -
      Live demo (click to show) +
      + Live demo (click to show) -This demo uses `superagent` to upload data to . It will +This demo uses `superagent` to upload data to https://s2c.sheetjs.com. It will parse the workbook and return an HTML table. :::caution pass @@ -587,9 +595,10 @@ This demo was tested in the following environments: ::: -
      Complete Example (click to show) +
      + Complete Example (click to show) -This demo uses `fetch` to upload data to . It will parse +This demo uses `fetch` to upload data to https://s2c.sheetjs.com. It will parse the workbook and return data in CSV rows. 1) Install the [SheetJS NodeJS module](/docs/getting-started/installation/nodejs): @@ -709,9 +718,10 @@ This demo was tested in the following environments: ::: -
      Complete Example (click to show) +
      + Complete Example (click to show) -This demo uses `request` to upload data to . It will +This demo uses `request` to upload data to https://s2c.sheetjs.com. It will parse the workbook and return data in CSV rows. 1) Install the [SheetJS NodeJS module](/docs/getting-started/installation/nodejs) diff --git a/docz/docs/03-demos/03-net/03-server/01-express.md b/docz/docs/03-demos/03-net/03-server/01-express.md index 9801fab..48d1e2b 100644 --- a/docz/docs/03-demos/03-net/03-server/01-express.md +++ b/docz/docs/03-demos/03-net/03-server/01-express.md @@ -151,7 +151,7 @@ npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz express node SheetJSExpressCSV.js ``` -4) Test POST requests using . The following +4) Test POST requests using https://sheetjs.com/pres.numbers . The following commands should be run in a new terminal window: ```bash diff --git a/docz/docs/03-demos/03-net/03-server/04-drash.md b/docz/docs/03-demos/03-net/03-server/04-drash.md index be1c051..4ca090d 100644 --- a/docz/docs/03-demos/03-net/03-server/04-drash.md +++ b/docz/docs/03-demos/03-net/03-server/04-drash.md @@ -123,7 +123,7 @@ curl -LO https://docs.sheetjs.com/drash/SheetJSDrash.ts deno run --allow-net SheetJSDrash.ts ``` -3) Download the test file +3) Download the test file https://sheetjs.com/pres.numbers 4) Open `http://localhost:7262/` in your browser. diff --git a/docz/docs/03-demos/03-net/03-server/09-elysia.md b/docz/docs/03-demos/03-net/03-server/09-elysia.md index 9844fec..90a9977 100644 --- a/docz/docs/03-demos/03-net/03-server/09-elysia.md +++ b/docz/docs/03-demos/03-net/03-server/09-elysia.md @@ -151,7 +151,7 @@ app.listen(3000); bun run src/SheetJSElysia.ts ``` -5) Test POST requests using . The following +5) Test POST requests using https://sheetjs.com/pres.numbers . The following commands should be run in a new terminal window: ```bash diff --git a/docz/docs/03-demos/03-net/03-server/11-nestjs.md b/docz/docs/03-demos/03-net/03-server/11-nestjs.md index 6abc811..8d7d253 100644 --- a/docz/docs/03-demos/03-net/03-server/11-nestjs.md +++ b/docz/docs/03-demos/03-net/03-server/11-nestjs.md @@ -209,7 +209,7 @@ npx @nestjs/cli start ::: -8) Test POST requests using . The following +8) Test POST requests using https://sheetjs.com/pres.numbers . The following commands should be run in a new terminal window: ```bash diff --git a/docz/docs/03-demos/03-net/03-server/19-fastify.md b/docz/docs/03-demos/03-net/03-server/19-fastify.md index 6895ed6..e6b1a83 100644 --- a/docz/docs/03-demos/03-net/03-server/19-fastify.md +++ b/docz/docs/03-demos/03-net/03-server/19-fastify.md @@ -166,7 +166,7 @@ npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz fastify node SheetJSFastify.js ``` -3) Test POST requests using . The following +3) Test POST requests using https://sheetjs.com/pres.numbers . The following commands should be run in a new terminal window: ```bash diff --git a/docz/docs/03-demos/03-net/03-server/index.md b/docz/docs/03-demos/03-net/03-server/index.md index 1735e9d..25f5d74 100644 --- a/docz/docs/03-demos/03-net/03-server/index.md +++ b/docz/docs/03-demos/03-net/03-server/index.md @@ -120,7 +120,8 @@ That approach is not explored in this demo. ::: -
      Complete Example (click to show) +
      + Complete Example (click to show) :::note Tested Deployments diff --git a/docz/docs/03-demos/03-net/04-email/11-pst.md b/docz/docs/03-demos/03-net/04-email/11-pst.md index 770a2b6..5748903 100644 --- a/docz/docs/03-demos/03-net/04-email/11-pst.md +++ b/docz/docs/03-demos/03-net/04-email/11-pst.md @@ -162,7 +162,8 @@ added and exposed in a script. [`pstextractor.js`](pathname:///pst/pstextractor.js) is loaded in the demo page. -
      Build instructions (click to show) +
      + Build instructions (click to show) 1) Initialize a new NodeJS project and install the dependency: diff --git a/docz/docs/03-demos/03-net/04-email/index.md b/docz/docs/03-demos/03-net/04-email/index.md index 152457f..2d9573e 100644 --- a/docz/docs/03-demos/03-net/04-email/index.md +++ b/docz/docs/03-demos/03-net/04-email/index.md @@ -378,7 +378,7 @@ const concat_RS = (stream) => new Promise((res, rej) => { | `gmail.com` | `imap.gmail.com` | | `fastmail.com` | `imap.fastmail.com` | -4) Download . Using a different account, send +4) Download https://sheetjs.com/pres.numbers. Using a different account, send an email to the test account and attach the file. At the end of this step, the test account should have an email in the inbox that has an attachment. diff --git a/docz/docs/03-demos/03-net/08-headless/index.md b/docz/docs/03-demos/03-net/08-headless/index.md index ac4a221..f7b125c 100644 --- a/docz/docs/03-demos/03-net/08-headless/index.md +++ b/docz/docs/03-demos/03-net/08-headless/index.md @@ -50,7 +50,8 @@ sequenceDiagram end ``` -
      Key Steps (click to hide) +
      + Key Steps (click to hide) 1) Launch the headless browser and load the target site. @@ -66,7 +67,7 @@ sequenceDiagram
      -This demo exports data from . +This demo exports data from https://sheetjs.com/demos/table. :::note pass @@ -355,7 +356,8 @@ Binary strings are the favored data type. They can be safely passed from the browser context to the automation script. PhantomJS provides an API to write binary strings to file (`fs.write` using mode `wb`). -
      Integration Details and Demo (click to show) +
      + Integration Details and Demo (click to show) The steps are marked in the comments: diff --git a/docz/docs/03-demos/03-net/09-dom.md b/docz/docs/03-demos/03-net/09-dom.md index 39c1599..a2b1858 100644 --- a/docz/docs/03-demos/03-net/09-dom.md +++ b/docz/docs/03-demos/03-net/09-dom.md @@ -107,7 +107,8 @@ const workbook = XLSX.utils.table_to_book(doc); XLSX.writeFile(workbook, "SheetJSDOM.xlsx"); ``` -
      Complete Demo (click to show) +
      + Complete Demo (click to show) :::note Tested Deployments @@ -147,7 +148,8 @@ the following patches were needed: - TABLE `rows` property (explained above) - TR `cells` property (explained above) -
      Complete Demo (click to show) +
      + Complete Demo (click to show) :::note Tested Deployments @@ -200,7 +202,8 @@ Object.defineProperty(tbl.__proto__, "innerHTML", { get: function() { }}); ``` -
      Complete Demo (click to show) +
      + Complete Demo (click to show) :::note Tested Deployments @@ -243,7 +246,8 @@ can be shimmed, but it is strongly recommended to use a more compliant library. [`SheetJSCheerio.js`](pathname:///dom/SheetJSCheerio.js) implements the missing features to ensure that SheetJS DOM methods can process TABLE elements. -
      Complete Demo (click to show) +
      + Complete Demo (click to show) :::note Tested Deployments @@ -314,7 +318,8 @@ const workbook = XLSX.utils.table_to_book(tbl); XLSX.writeFile(workbook, "SheetJSDenoDOM.xlsx");`} -
      Complete Demo (click to show) +
      + Complete Demo (click to show) :::note Tested Deployments diff --git a/docz/docs/03-demos/04-grid/12-vtl.md b/docz/docs/03-demos/04-grid/12-vtl.md index 5429bf5..46046f5 100644 --- a/docz/docs/03-demos/04-grid/12-vtl.md +++ b/docz/docs/03-demos/04-grid/12-vtl.md @@ -131,5 +131,5 @@ npm run dev 5) Load the displayed URL (typically `http://localhost:5173`) in a web browser. -When the page loads, it will try to fetch +When the page loads, it will try to fetch https://sheetjs.com/pres.numbers and display the data. Click "Export" to generate a workbook. diff --git a/docz/docs/03-demos/04-grid/14-gdg.md b/docz/docs/03-demos/04-grid/14-gdg.md index 96b620b..6ef8828 100644 --- a/docz/docs/03-demos/04-grid/14-gdg.md +++ b/docz/docs/03-demos/04-grid/14-gdg.md @@ -367,7 +367,7 @@ curl -L -o src/App.tsx https://docs.sheetjs.com/gdg/App.tsx ![glide-data-grid initial view](pathname:///gdg/pre.png) -The demo downloads and processes . +The demo downloads and processes https://sheetjs.com/pres.numbers. 6) Make some changes to the grid data. diff --git a/docz/docs/03-demos/04-grid/16-rdg.md b/docz/docs/03-demos/04-grid/16-rdg.md index db931fc..20112e7 100644 --- a/docz/docs/03-demos/04-grid/16-rdg.md +++ b/docz/docs/03-demos/04-grid/16-rdg.md @@ -173,7 +173,7 @@ npm start #### Testing -5) When the page loads, it will fetch , parse +5) When the page loads, it will fetch https://sheetjs.com/pres.numbers, parse with SheetJS, and load the data in the data grid. 6) Click one of the "export" buttons to export the grid data to file. diff --git a/docz/docs/03-demos/04-grid/18-mui.md b/docz/docs/03-demos/04-grid/18-mui.md index d66c871..25aefdf 100644 --- a/docz/docs/03-demos/04-grid/18-mui.md +++ b/docz/docs/03-demos/04-grid/18-mui.md @@ -225,4 +225,4 @@ curl -L -o src/App.tsx https://docs.sheetjs.com/mui/dg/App.tsx npm run dev ``` -When the page loads, it will fetch and process +When the page loads, it will fetch and process https://sheetjs.com/pres.numbers diff --git a/docz/docs/03-demos/04-grid/index.md b/docz/docs/03-demos/04-grid/index.md index 7e33d43..ea6ec92 100644 --- a/docz/docs/03-demos/04-grid/index.md +++ b/docz/docs/03-demos/04-grid/index.md @@ -67,7 +67,8 @@ The [AngularJS demo](/docs/demos/frontend/angularjs) covers more general strateg [Click here for a live integration demo.](pathname:///angularjs/ui-grid.html) -
      Notes (click to show) +
      + Notes (click to show) The library does not provide any way to modify the import button, so the demo includes a simple directive for a File Input HTML element. It also includes a diff --git a/docz/docs/03-demos/12-static/01-lume.md b/docz/docs/03-demos/12-static/01-lume.md index 4f0ab81..9bb28d9 100644 --- a/docz/docs/03-demos/12-static/01-lume.md +++ b/docz/docs/03-demos/12-static/01-lume.md @@ -168,7 +168,7 @@ The `nunjucks` plugin was included by default in Lume version 1. ::: -2) Download and place in a `_data` subfolder: +2) Download https://sheetjs.com/pres.xlsx and place in a `_data` subfolder: ```bash mkdir -p _data diff --git a/docz/docs/03-demos/12-static/02-gatsbyjs.md b/docz/docs/03-demos/12-static/02-gatsbyjs.md index bddbf01..cd0b062 100644 --- a/docz/docs/03-demos/12-static/02-gatsbyjs.md +++ b/docz/docs/03-demos/12-static/02-gatsbyjs.md @@ -255,7 +255,7 @@ npm i --save gatsby-transformer-excel@4 gatsby-source-filesystem@4 ::: -5) Make a `src/data` directory, download , and +5) Make a `src/data` directory, download https://sheetjs.com/pres.xlsx, and move the downloaded file into the new folder: ```bash diff --git a/docz/docs/03-demos/12-static/04-esbuild.md b/docz/docs/03-demos/12-static/04-esbuild.md index f8b60f0..b74cf37 100644 --- a/docz/docs/03-demos/12-static/04-esbuild.md +++ b/docz/docs/03-demos/12-static/04-esbuild.md @@ -271,7 +271,7 @@ document.body.appendChild(elt); curl -LO https://docs.sheetjs.com/esbuild/build.mjs ``` -5) Download to the project folder: +5) Download https://sheetjs.com/pres.numbers to the project folder: ```bash curl -LO https://sheetjs.com/pres.numbers diff --git a/docz/docs/03-demos/12-static/05-vitejs.md b/docz/docs/03-demos/12-static/05-vitejs.md index e5cc62b..005e90e 100644 --- a/docz/docs/03-demos/12-static/05-vitejs.md +++ b/docz/docs/03-demos/12-static/05-vitejs.md @@ -227,7 +227,7 @@ npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`} curl -O https://docs.sheetjs.com/vitejs/vite.config.ts ``` -3) Make a `data` folder and download : +3) Make a `data` folder and download https://sheetjs.com/pres.xlsx : ```bash mkdir -p data diff --git a/docz/docs/03-demos/12-static/06-webpack.md b/docz/docs/03-demos/12-static/06-webpack.md index cc8de8f..a0b9e13 100644 --- a/docz/docs/03-demos/12-static/06-webpack.md +++ b/docz/docs/03-demos/12-static/06-webpack.md @@ -285,7 +285,7 @@ loader.raw = true; module.exports = loader; ``` -6) Download and save to the `data` folder: +6) Download https://sheetjs.com/pres.xlsx and save to the `data` folder: ```bash curl -L -o data/pres.xlsx https://sheetjs.com/pres.xlsx diff --git a/docz/docs/03-demos/12-static/09-nuxtjs.md b/docz/docs/03-demos/12-static/09-nuxtjs.md index bb6db39..146034b 100644 --- a/docz/docs/03-demos/12-static/09-nuxtjs.md +++ b/docz/docs/03-demos/12-static/09-nuxtjs.md @@ -296,7 +296,7 @@ When the build finishes, the terminal will display a URL like: The server is listening on that URL. Open the link in a web browser. -3) Download and move to the `content` folder. +3) Download https://sheetjs.com/pres.xlsx and move to the `content` folder. ```bash curl -L -o content/pres.xlsx https://sheetjs.com/pres.xlsx @@ -485,7 +485,8 @@ The data is stored in the `body` property of the final object. NuxtJS modules are the main mechanism for adding transformers to the pipeline. -
      Module Details (click to show) +
      + Module Details (click to show) Due to the structure of the NuxtJS system, modules must be defined in separate script files. The module script is expected to export a module configured with @@ -612,7 +613,7 @@ When the build finishes, the terminal will display a URL like: The server is listening on that URL. Open the link in a web browser. -3) Download and move to the `content` folder. +3) Download https://sheetjs.com/pres.xlsx and move to the `content` folder. ```bash curl -L -o content/pres.xlsx https://sheetjs.com/pres.xlsx diff --git a/docz/docs/03-demos/17-mobile/01-reactnative.md b/docz/docs/03-demos/17-mobile/01-reactnative.md index d4d31e2..924a8e3 100644 --- a/docz/docs/03-demos/17-mobile/01-reactnative.md +++ b/docz/docs/03-demos/17-mobile/01-reactnative.md @@ -207,7 +207,7 @@ row. This neatly skips the first header row. React Native versions starting from `0.72.0`[^5] support binary data in `fetch`. -This snippet downloads and parses : +This snippet downloads and parses https://sheetjs.com/pres.xlsx: ```js /* fetch data into an ArrayBuffer */ @@ -376,7 +376,8 @@ If the device asks to trust the computer, tap "Trust" and enter the passcode. 15) Enable developer code signing certificates[^7]. -
      Enabling Code Signing (click to show) +
      + Enabling Code Signing (click to show) These instructions were verified against Xcode 15.3. @@ -566,7 +567,8 @@ The following table lists tested file plugins. "OS" lists tested platforms Due to privacy concerns, apps must request file access. There are special APIs for accessing data and are subject to change in future platform versions. -
      Technical Details (click to show) +
      + Technical Details (click to show) **iOS** @@ -698,7 +700,8 @@ is the continuation of other libraries that date back to 2016. The `ascii` type returns an array of numbers corresponding to the raw bytes. A `Uint8Array` from the data is compatible with the `buffer` type. -
      Reading and Writing snippets (click to hide) +
      + Reading and Writing snippets (click to hide) _Reading Data_ @@ -779,7 +782,8 @@ is a filesystem API that uses modern iOS and Android development patterns. The `base64` encoding returns strings compatible with the `base64` type: -
      Reading and Writing snippets (click to hide) +
      + Reading and Writing snippets (click to hide) _Reading Data_ @@ -839,7 +843,8 @@ The [`expo-document-picker`](#expo-document-picker) snippet makes a local copy. The `EncodingType.Base64` encoding is compatible with `base64` type. -
      Reading and Writing snippets (click to hide) +
      + Reading and Writing snippets (click to hide) _Reading Data_ @@ -1197,7 +1202,7 @@ npx react-native doctor ::: -8) Download and open the Downloads folder. +8) Download https://sheetjs.com/pres.numbers and open the Downloads folder. 9) Click and drag `pres.numbers` from the Downloads folder into the simulator. @@ -1277,7 +1282,7 @@ cd ios; pod install; cd - npx react-native run-ios ``` -17) Download and open the Downloads folder. +17) Download https://sheetjs.com/pres.numbers and open the Downloads folder. 18) In the simulator, click the Home icon to return to the home screen. @@ -1353,7 +1358,7 @@ If the device asks to allow USB debugging, tap "Allow". npx react-native run-android ``` -30) Download on the device. +30) Download https://sheetjs.com/pres.numbers on the device. 31) Switch back to the "SheetJSRN" app. @@ -1442,7 +1447,7 @@ npx react-native run-ios If the build fails, some troubleshooting notes are included in the "iOS Device Testing" part of the [Fetch Demo](#fetch-demo) (step 17). -41) Download on the device. +41) Download https://sheetjs.com/pres.numbers on the device. 42) Switch back to the "SheetJSRN" app. diff --git a/docz/docs/03-demos/17-mobile/02-nativescript.md b/docz/docs/03-demos/17-mobile/02-nativescript.md index 12f3d1a..0be30c2 100644 --- a/docz/docs/03-demos/17-mobile/02-nativescript.md +++ b/docz/docs/03-demos/17-mobile/02-nativescript.md @@ -116,7 +116,8 @@ function get_url_for_filename(filename: string): string { Due to privacy concerns, apps must request file access. There are special APIs for accessing data and are subject to change in future platform versions. -
      Technical Details (click to show) +
      + Technical Details (click to show) **Android** @@ -296,7 +297,8 @@ npx -p nativescript ns doctor android In the last macOS test, the following output was displayed: -
      Expected output (click to hide) +
      + Expected output (click to hide)
        Getting environment information{'\n'}
      @@ -322,7 +324,8 @@ npx -p nativescript ns doctor ios
       
       In the last macOS test, the following output was displayed:
       
      -
      Expected output (click to hide) +
      + Expected output (click to hide)
        Getting environment information{'\n'}
      @@ -776,7 +779,8 @@ npx -p nativescript ns run android
       If the Android emulators are closed and an Android device is connected, the last
       command will build an APK and install on the device.
       
      -
      Android Device Testing (click to hide) +
      + Android Device Testing (click to hide) When the app launches, if the SheetJS library is loaded and if the device is connected to the Internet, a list of Presidents should be displayed. diff --git a/docz/docs/03-demos/17-mobile/03-quasar.md b/docz/docs/03-demos/17-mobile/03-quasar.md index 48f8af1..c52ad4b 100644 --- a/docz/docs/03-demos/17-mobile/03-quasar.md +++ b/docz/docs/03-demos/17-mobile/03-quasar.md @@ -356,7 +356,7 @@ export default defineComponent({ To test that reading works: -- Download +- Download https://sheetjs.com/pres.numbers - In the simulator, click the Home icon to return to the home screen - Click on the "Files" icon - Click and drag `pres.numbers` from a Finder window into the simulator. diff --git a/docz/docs/03-demos/17-mobile/05-capacitor.md b/docz/docs/03-demos/17-mobile/05-capacitor.md index 233702f..fe69b7f 100644 --- a/docz/docs/03-demos/17-mobile/05-capacitor.md +++ b/docz/docs/03-demos/17-mobile/05-capacitor.md @@ -137,7 +137,8 @@ iOS development is only supported on macOS. ::: -
      Installation Notes (click to show) +
      + Installation Notes (click to show) CapacitorJS requires Java 17. diff --git a/docz/docs/03-demos/17-mobile/06-flutter.md b/docz/docs/03-demos/17-mobile/06-flutter.md index dd0d66f..02e18bd 100644 --- a/docz/docs/03-demos/17-mobile/06-flutter.md +++ b/docz/docs/03-demos/17-mobile/06-flutter.md @@ -220,7 +220,8 @@ Run `flutter doctor` and confirm the following items are checked: (the actual version numbers may differ) -
      Installation Notes (click to hide) +
      + Installation Notes (click to hide) :::note pass @@ -313,7 +314,8 @@ cd sheetjs_flutter 3) Start the Android emulator. -
      Details (click to hide) +
      + Details (click to hide) **Android Studio** @@ -360,7 +362,8 @@ emulator -avd Pixel_3a_API_34 flutter run ``` -
      If emulator is not detected (click to show) +
      + If emulator is not detected (click to show) In some test runs, `flutter run` did not automatically detect the emulator. @@ -440,7 +443,7 @@ curl -L -o lib/main.dart https://docs.sheetjs.com/flutter/main.dart flutter run ``` -The app fetches , parses, converts data to an +The app fetches https://sheetjs.com/pres.numbers, parses, converts data to an array of arrays, and presents the data in a Flutter `Table` widget. :::caution pass @@ -485,7 +488,7 @@ Searching for `minSdkVersion` should reveal the following line: flutter run ``` -The app fetches , parses, converts data to an +The app fetches https://sheetjs.com/pres.numbers, parses, converts data to an array of arrays, and presents the data in a Flutter `Table` widget. ### Android Device @@ -564,8 +567,8 @@ The list should include the device: flutter run -d SheetPad ``` -[^1]: is the official site for the Dart Programming Language. -[^2]: is the official site for the Flutter Framework. +[^1]: https://dart.dev/ is the official site for the Dart Programming Language. +[^2]: https://flutter.dev/ is the official site for the Flutter Framework. [^3]: [The `flutter_js` package](https://pub.dev/packages/flutter_js) is hosted on the Dart package repository. [^4]: See [the dedicated "Swift + JavaScriptCore" demo](/docs/demos/engines/jsc) for more details. [^5]: See [the dedicated "C + QuickJS" demo](/docs/demos/engines/quickjs) for more details. diff --git a/docz/docs/03-demos/19-desktop/03-wails.md b/docz/docs/03-demos/19-desktop/03-wails.md index d63e629..97585f5 100644 --- a/docz/docs/03-demos/19-desktop/03-wails.md +++ b/docz/docs/03-demos/19-desktop/03-wails.md @@ -308,7 +308,8 @@ This demo was tested in the following environments: 0) Read the Wails "Getting Started" guide[^14] and install dependencies. -
      Installation Notes (click to show) +
      + Installation Notes (click to show) Wails will require: diff --git a/docz/docs/03-demos/19-desktop/04-tauri.md b/docz/docs/03-demos/19-desktop/04-tauri.md index bd7f845..0d52814 100644 --- a/docz/docs/03-demos/19-desktop/04-tauri.md +++ b/docz/docs/03-demos/19-desktop/04-tauri.md @@ -354,7 +354,8 @@ This demo was tested in the following environments: 0) Read Tauri "Getting Started" guide and install prerequisites.[^16] -
      Installation Notes (click to show) +
      + Installation Notes (click to show) At a high level, the following software is required for building Tauri apps: @@ -625,7 +626,7 @@ or The following features should be manually verified: -- When it is loaded, the app will download +- When it is loaded, the app will download https://sheetjs.com/pres.numbers and display the data in a table. - Clicking "Save Data" will show a save dialog. After selecting a path and name, the app will write a file. That file can be opened in a spreadsheet editor. diff --git a/docz/docs/03-demos/19-desktop/05-neutralino.md b/docz/docs/03-demos/19-desktop/05-neutralino.md index cde5e5f..8d1f2a2 100644 --- a/docz/docs/03-demos/19-desktop/05-neutralino.md +++ b/docz/docs/03-demos/19-desktop/05-neutralino.md @@ -204,7 +204,8 @@ This demo was tested in the following environments: The app core state will be the HTML table. Reading files will add the table to the window. Writing files will parse the table into a spreadsheet. -
      Installation Notes (click to show) +
      + Installation Notes (click to show) NeutralinoJS uses `portable-file-dialogs`[^12] to show open and save dialogs. On Linux, Zenity or KDialog are require. diff --git a/docz/docs/03-demos/19-desktop/06-reactnative.md b/docz/docs/03-demos/19-desktop/06-reactnative.md index 0310944..bc254ab 100644 --- a/docz/docs/03-demos/19-desktop/06-reactnative.md +++ b/docz/docs/03-demos/19-desktop/06-reactnative.md @@ -133,7 +133,8 @@ function update_state(wb) { The demos use native `View` elements from `react-native` to display data. -
      Explanation (click to show) +
      + Explanation (click to show) Since some spreadsheets may have empty cells between cells containing data, looping over the rows may skip values! @@ -404,7 +405,8 @@ used to switch the NodeJS version. ::: -
      Installation Notes (click to show) +
      + Installation Notes (click to show) When the demo was last tested, a PowerShell script installed dependencies: @@ -629,7 +631,7 @@ When this demo was last tested on Windows 11 ARM, the build failed. -9) Download . +9) Download https://sheetjs.com/pres.xlsx. 10) In the app, click "Click here to Open File!" and use the file picker to select `pres.xlsx` . The app will refresh and display the data from the file. @@ -912,7 +914,7 @@ Close the running app from the dock and close the Metro terminal window. curl -LO https://docs.sheetjs.com/reactnative/rnm/App.tsx ``` -10) Download to the Downloads folder. +10) Download https://sheetjs.com/pres.xlsx to the Downloads folder. #### Development diff --git a/docz/docs/03-demos/20-cli/09-nodesea.md b/docz/docs/03-demos/20-cli/09-nodesea.md index 60f7924..885f1d5 100644 --- a/docz/docs/03-demos/20-cli/09-nodesea.md +++ b/docz/docs/03-demos/20-cli/09-nodesea.md @@ -222,7 +222,7 @@ local NodeJS platform. ::: -4) Download the test file : +4) Download the test file https://sheetjs.com/pres.numbers: ```bash curl -o pres.numbers https://sheetjs.com/pres.numbers diff --git a/docz/docs/03-demos/20-cli/23-deno.md b/docz/docs/03-demos/20-cli/23-deno.md index e3a82b9..8899ff6 100644 --- a/docz/docs/03-demos/20-cli/23-deno.md +++ b/docz/docs/03-demos/20-cli/23-deno.md @@ -111,7 +111,7 @@ This demo was last tested in the following deployments: 0) Install Deno.[^6] -1) Download the test file : +1) Download the test file https://sheetjs.com/pres.numbers: ```bash curl -o pres.numbers https://sheetjs.com/pres.numbers diff --git a/docz/docs/03-demos/20-cli/index.md b/docz/docs/03-demos/20-cli/index.md index 470ade6..e00f64a 100644 --- a/docz/docs/03-demos/20-cli/index.md +++ b/docz/docs/03-demos/20-cli/index.md @@ -124,7 +124,7 @@ This demo was tested in the following deployments: ::: -0) Download the test file : +0) Download the test file https://sheetjs.com/pres.numbers: ```bash curl -o pres.numbers https://sheetjs.com/pres.numbers @@ -437,7 +437,7 @@ Versions `0.75.1` and `0.82.0` are known to work. cargo build --release --bin sheet2csv ``` -5) Download the test file : +5) Download the test file https://sheetjs.com/pres.numbers: ```bash curl -o pres.numbers https://sheetjs.com/pres.numbers diff --git a/docz/docs/03-demos/23-data/10-sql.md b/docz/docs/03-demos/23-data/10-sql.md index 00de992..387fc2d 100644 --- a/docz/docs/03-demos/23-data/10-sql.md +++ b/docz/docs/03-demos/23-data/10-sql.md @@ -11,10 +11,11 @@ import TabItem from '@theme/TabItem'; ### Generating Tables -This example will fetch , scan the columns of the +This example will fetch https://sheetjs.com/data/cd.xls, scan the columns of the first worksheet to determine data types, and generate 6 PostgreSQL statements. -
      Explanation (click to show) +
      + Explanation (click to show) The relevant `generate_sql` function takes a worksheet name and a table name: diff --git a/docz/docs/03-demos/23-data/14-knex.md b/docz/docs/03-demos/23-data/14-knex.md index cb11f28..9ca3b7b 100644 --- a/docz/docs/03-demos/23-data/14-knex.md +++ b/docz/docs/03-demos/23-data/14-knex.md @@ -90,7 +90,8 @@ dropping tables with `dropTableIfExists`[^9]. The array of objects can be scanned to determine column names and types. -
      Implementation Details (click to show) +
      + Implementation Details (click to show) The `aoo_to_knex_table` function: diff --git a/docz/docs/03-demos/23-data/16-postgresql.md b/docz/docs/03-demos/23-data/16-postgresql.md index 530d788..18de540 100644 --- a/docz/docs/03-demos/23-data/16-postgresql.md +++ b/docz/docs/03-demos/23-data/16-postgresql.md @@ -132,7 +132,8 @@ for(let row of aoo) { The array of objects can be scanned to determine column names and types. With the names and types, a `CREATE TABLE` query can be written. -
      Implementation Details (click to show) +
      + Implementation Details (click to show) The `aoo_to_pg_table` function: @@ -212,7 +213,8 @@ async function aoo_to_pg_table(client, aoo, table_name) { 0) Install and start the PostgreSQL server. -
      Installation Notes (click to show) +
      + Installation Notes (click to show) On macOS, install the `postgresql` formula with Homebrew: diff --git a/docz/docs/03-demos/23-data/17-mariadb.md b/docz/docs/03-demos/23-data/17-mariadb.md index a59e60c..5278e4c 100644 --- a/docz/docs/03-demos/23-data/17-mariadb.md +++ b/docz/docs/03-demos/23-data/17-mariadb.md @@ -129,7 +129,8 @@ for(let row of aoo) { The array of objects can be scanned to determine column names and types. With the names and types, a `CREATE TABLE` query can be written. -
      Implementation Details (click to show) +
      + Implementation Details (click to show) The `aoo_to_mariadb_table` function: @@ -203,7 +204,8 @@ async function aoo_to_mariadb_table(conn, aoo, table_name) { 0) Install and start the MariaDB server. -
      Installation Notes (click to show) +
      + Installation Notes (click to show) On macOS, install the `mariadb` formula with Homebrew: diff --git a/docz/docs/03-demos/23-data/19-alasql.md b/docz/docs/03-demos/23-data/19-alasql.md index 3d8d66e..b45fa5a 100644 --- a/docz/docs/03-demos/23-data/19-alasql.md +++ b/docz/docs/03-demos/23-data/19-alasql.md @@ -37,11 +37,12 @@ This demo was tested in the following environments: ## Live Demo -This demo fetches , performs a `SELECT` query +This demo fetches https://sheetjs.com/pres.numbers, performs a `SELECT` query using the built-in AlaSQL + SheetJS integration, then displays the result. Using the result as a data source, the demo will write to a new spreadsheet. -
      Demo AlaSQL Queries (click to show) +
      + Demo AlaSQL Queries (click to show) ```sql title="AlaSQL Query for reading data from a workbook" SELECT `Index`, -- "Index" field is the "Index" column of the sheet @@ -282,7 +283,7 @@ cd alasql npm i --save alasql@3.1.0 https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`} -4) Download the test file : +4) Download the test file https://sheetjs.com/pres.numbers : ```bash curl -LO https://sheetjs.com/pres.numbers diff --git a/docz/docs/03-demos/23-data/25-mongodb.md b/docz/docs/03-demos/23-data/25-mongodb.md index 40ed9d2..11ea77d 100644 --- a/docz/docs/03-demos/23-data/25-mongodb.md +++ b/docz/docs/03-demos/23-data/25-mongodb.md @@ -87,7 +87,8 @@ FerretDB[^10] 1) Start a server on `localhost` (follow official instructions). -
      MongoDB CE Setup (click to show) +
      + MongoDB CE Setup (click to show) For MongoDB 7.0 Community Edition, the macOS steps required `brew`: diff --git a/docz/docs/03-demos/23-data/26-redis.md b/docz/docs/03-demos/23-data/26-redis.md index a5046af..680459b 100644 --- a/docz/docs/03-demos/23-data/26-redis.md +++ b/docz/docs/03-demos/23-data/26-redis.md @@ -243,7 +243,8 @@ this demo also requires NodeJS version 18 or later. 0) Set up and start a local Redis-compatible server. -
      Redis-compatible servers (click to show) +
      + Redis-compatible servers (click to show) This demo was last tested on macOS. diff --git a/docz/docs/03-demos/23-data/29-pouchdb.md b/docz/docs/03-demos/23-data/29-pouchdb.md index 7884c46..a296480 100644 --- a/docz/docs/03-demos/23-data/29-pouchdb.md +++ b/docz/docs/03-demos/23-data/29-pouchdb.md @@ -135,7 +135,7 @@ md5sum master.zip || md5 master.zip ``` If the download is unavailable, a mirror is available at - +https://docs.sheetjs.com/pouchdb/master.zip 1) Unzip the `master.zip` file and enter the folder: diff --git a/docz/docs/03-demos/27-local/01-file.md b/docz/docs/03-demos/27-local/01-file.md index 48b35fc..0587f0c 100644 --- a/docz/docs/03-demos/27-local/01-file.md +++ b/docz/docs/03-demos/27-local/01-file.md @@ -119,7 +119,8 @@ function file_to_wb(file, callback) { } ``` -
      FileReaderSync in Web Workers (click to show) +
      + FileReaderSync in Web Workers (click to show) `FileReaderSync` is only available in Web Workers. It returns an `ArrayBuffer`: @@ -240,7 +241,8 @@ is between `0` and `255`) with `type: "array"`. [Google Sheets](/docs/demos/extensions/gsheet) follows Java signed data type conventions. Byte arrays include values from `-128` to `127`. -
      How to Fix Signed Arrays (click to show) +
      + How to Fix Signed Arrays (click to show) The unsigned value for a negative byte can be calculated with a bitwise AND (`&`) operation against `0xFF`: @@ -290,7 +292,8 @@ _Writing Files_ XLSX.writeFile(wb, "SheetJS.xlsx"); ``` -
      Implementation Details (click to show) +
      + Implementation Details (click to show) Under the hood, it creates a special URL and clicks a link. The library method includes a few workarounds for legacy browsers @@ -345,7 +348,8 @@ manifest as UUID file names like `01234567-89ab-cdef-0123-456789abcdef` . For sites using GTM, it is recommended to patch `document.createElement` and revert after performing the export. -
      GTM Workaround (click to show) +
      + GTM Workaround (click to show) The workaround is to ensure new `A` elements created by `document.createElement` have the `target` attribute set to `_blank`. @@ -458,7 +462,8 @@ Some lesser-used browsers do not support File System Access API: ::: -
      Live Example (click to show) +
      + Live Example (click to show) This live example reads a file then tries to save as XLSX. If the File System Access API is not supported, the result will be a clear message. @@ -611,7 +616,8 @@ _Writing Files_ IE10 and IE11 support `navigator.msSaveBlob`. `XLSX.writeFile` will use this method if it is available. -
      Implementation Details (click to show) +
      + Implementation Details (click to show) **`XLSX.writeFile(wb, "SheetJS.xlsx");`** is roughly equivalent to: @@ -669,7 +675,8 @@ var wb = readFile("sheetjs.numbers"); writeFile(wb, "sheetjs.xlsx"); ``` -
      Implementation Details (click to show) +
      + Implementation Details (click to show) **`XLSX.readFile(filepath)`** is equivalent to: @@ -759,7 +766,8 @@ Any Deno script using `XLSX.writeFile` requires the `--allow-write` entitlement. ::: -
      Implementation Details (click to show) +
      + Implementation Details (click to show) **`XLSX.readFile(filepath)`** is equivalent to: diff --git a/docz/docs/03-demos/27-local/02-websql.md b/docz/docs/03-demos/27-local/02-websql.md index a6633ed..c7aa96d 100644 --- a/docz/docs/03-demos/27-local/02-websql.md +++ b/docz/docs/03-demos/27-local/02-websql.md @@ -23,7 +23,7 @@ WebSQL (formally "Web SQL Database") is a popular SQL-based in-browser database available in Chromium and related browsers including Google Chrome. In practice, it is powered by SQLite. Many SQLite-compatible queries work as-is in WebSQL. -The public demo generates a database from workbook. +The public demo https://sheetjs.com/sql generates a database from workbook. :::info pass diff --git a/docz/docs/03-demos/27-local/03-storageapi.md b/docz/docs/03-demos/27-local/03-storageapi.md index acfdc32..00f9e57 100644 --- a/docz/docs/03-demos/27-local/03-storageapi.md +++ b/docz/docs/03-demos/27-local/03-storageapi.md @@ -81,7 +81,7 @@ function localStorage_to_sheet() { ### Live Demo -This example will fetch , fill `localStorage` +This example will fetch https://sheetjs.com/pres.numbers, fill `localStorage` with rows, then generate a worksheet from the rows and write to a new file. After saving the exported file, the Local Storage can be inspected in the @@ -96,7 +96,8 @@ is strongly recommended to convert that array to a worksheet directly. ::: -
      Live Demo (click to show) +
      + Live Demo (click to show) ```jsx live function SheetJStorage() { @@ -199,7 +200,8 @@ function ws_to_localStorage(ws) { This example fills `localStorage` with 10 random keys and 10 random values, generates a worksheet from the data and writes to a new file. -
      Live Demo (click to show) +
      + Live Demo (click to show) ```jsx live function SheetJSRandomStorage() { diff --git a/docz/docs/03-demos/30-cloud/01-salesforce.md b/docz/docs/03-demos/30-cloud/01-salesforce.md index 6f7e751..2047c18 100644 --- a/docz/docs/03-demos/30-cloud/01-salesforce.md +++ b/docz/docs/03-demos/30-cloud/01-salesforce.md @@ -144,7 +144,8 @@ var data = [ The APIs typically return nested objects, so the array must be constructed. -
      Salesforce Representation (click to show) +
      + Salesforce Representation (click to show) The `data` parameter in the callback has a deep structure. Typically one would set a property in the component and display data in a template: diff --git a/docz/docs/03-demos/30-cloud/11-aws.md b/docz/docs/03-demos/30-cloud/11-aws.md index 01f602a..ba9affa 100644 --- a/docz/docs/03-demos/30-cloud/11-aws.md +++ b/docz/docs/03-demos/30-cloud/11-aws.md @@ -110,7 +110,8 @@ bb.on('finish', function() { }); ``` -
      Complete Code Sample (click to show) +
      + Complete Code Sample (click to show) This example takes the first uploaded file submitted with the key `upload`, parses the file and returns the CSV content of the first worksheet. @@ -191,7 +192,8 @@ callback(null, { }); ``` -
      Complete Code Sample (click to show) +
      + Complete Code Sample (click to show) This example creates a sample workbook object and sends the file in the response: @@ -333,7 +335,7 @@ Click "Save" and a new Policy statement should be created. The site will attempt to download `SheetJSLambda.xlsx`. Save and open the file to confirm it is valid. -21) Download and make a POST request to the +21) Download https://sheetjs.com/pres.numbers and make a POST request to the public function URL. This can be tested on the command line. Change `FUNCTION_URL` in the commands: diff --git a/docz/docs/03-demos/30-cloud/12-azure.md b/docz/docs/03-demos/30-cloud/12-azure.md index c0cbef4..d351bfb 100644 --- a/docz/docs/03-demos/30-cloud/12-azure.md +++ b/docz/docs/03-demos/30-cloud/12-azure.md @@ -126,7 +126,8 @@ option was not required. Using `@azure/functions`, the handler callback receives a `Request` object. Uploaded files can be pulled into `ArrayBuffer` objects. -
      Code Snippet (click to show) +
      + Code Snippet (click to show) This function returns a promise that resolves to an `ArrayBuffer` object: @@ -313,7 +314,7 @@ curl -L -o src/functions/SheetJSAzure.js https://docs.sheetjs.com/azure/index.js npm start ``` -11) In a separate terminal window, download +11) In a separate terminal window, download https://sheetjs.com/pres.numbers and make a POST request to the dev server: ```bash @@ -390,7 +391,7 @@ Take note of that URL. #### Remote Test -22) In a separate terminal window, download +22) In a separate terminal window, download https://sheetjs.com/pres.numbers and make a POST request to the production server. Replace `FUNCTION_URL` with the Invoke URL from Step 21: @@ -631,7 +632,7 @@ S,h,e,e,t,J,S The downloaded file is the raw file stored in Azure Blob Storage. To confirm it is valid, open the file in Excel or another spreadsheet editor. -[^1]: The platform-specific installers are available at +[^1]: The platform-specific installers are available at https://learn.microsoft.com/en-us/cli/azure/install-azure-cli [^2]: See [`read` in "Reading Files"](/docs/api/parse-options) [^3]: See ["Workbook Object" in "SheetJS Data Model"](/docs/csf/book) for more details. [^4]: See [`sheet_to_csv` in "CSV and Text"](/docs/api/utilities/csv#delimiter-separated-output) diff --git a/docz/docs/03-demos/30-cloud/18-github.md b/docz/docs/03-demos/30-cloud/18-github.md index 51b3090..1bba822 100644 --- a/docz/docs/03-demos/30-cloud/18-github.md +++ b/docz/docs/03-demos/30-cloud/18-github.md @@ -89,7 +89,7 @@ will not be able to display private data. Any publicly available spreadsheet can be a valid data source. The process will fetch the data on specified intervals or events. -For this demo, will be used. +For this demo, https://docs.sheetjs.com/pres.xlsx will be used. ### Action @@ -196,8 +196,8 @@ This was last tested by SheetJS users on 2023 December 04. :::info pass - is an example from a previous test. The -Flat Viewer URL for the repo is +https://github.com/SheetJS/flat-sheet is an example from a previous test. The +Flat Viewer URL for the repo is https://flatgithub.com/SheetJS/flat-sheet/ ::: @@ -329,7 +329,7 @@ jobs: [^2]: See ["GitHub Actions documentation"](https://docs.github.com/en/actions) in the GitHub documentation. [^3]: See [`githubocto/flat`](https://github.com/githubocto/flat) repo on GitHub. [^4]: See [`githubocto/flat-postprocessing`](https://github.com/githubocto/flat-postprocessing) repo on GitHub. -[^5]: The hosted version is available at +[^5]: The hosted version is available at https://flatgithub.com/ [^6]: See ["About billing for GitHub Actions"](https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions) in the GitHub documentation. [^7]: See [`readFile` in "Reading Files"](/docs/api/parse-options) [^8]: See ["Workbook Object"](/docs/csf/book) diff --git a/docz/docs/03-demos/30-cloud/19-deno.md b/docz/docs/03-demos/30-cloud/19-deno.md index 3984d65..72e70c7 100644 --- a/docz/docs/03-demos/30-cloud/19-deno.md +++ b/docz/docs/03-demos/30-cloud/19-deno.md @@ -105,13 +105,13 @@ show "SheetJS Spreadsheet Conversion Service": > ![Screenshot](pathname:///deno/sshot.png) -8) Download the test file +8) Download the test file https://sheetjs.com/pres.xlsx 9) In the browser window, click "Choose File" and select the downloaded file. 10) Click "Submit". The right panel will show the contents in a HTML TABLE. -11) Open a terminal window and download : +11) Open a terminal window and download https://sheetjs.com/pres.numbers: ```bash curl -LO https://sheetjs.com/pres.numbers diff --git a/docz/docs/03-demos/30-cloud/21-gsheet.md b/docz/docs/03-demos/30-cloud/21-gsheet.md index ffa781c..142d19c 100644 --- a/docz/docs/03-demos/30-cloud/21-gsheet.md +++ b/docz/docs/03-demos/30-cloud/21-gsheet.md @@ -351,7 +351,7 @@ A valid phone number (for SMS verification) may be required. ::: -1) Open in a web browser. Review the Google +1) Open https://console.cloud.google.com in a web browser. Review the Google Cloud Platform Terms of Service. :::warning pass @@ -408,7 +408,7 @@ The goal of this section is to create a service account and generate a JSON key. #### Create Service Account -12) Go to . +12) Go to https://console.cloud.google.com. 13) Click the Project Selector (`:·` icon) and select "SheetJS Test". diff --git a/docz/docs/03-demos/30-cloud/22-airtable.md b/docz/docs/03-demos/30-cloud/22-airtable.md index 6ed06c5..ec362d4 100644 --- a/docz/docs/03-demos/30-cloud/22-airtable.md +++ b/docz/docs/03-demos/30-cloud/22-airtable.md @@ -244,7 +244,7 @@ The form will look like the screenshot below: For the purposes of this demo, a sample workspace should be created: -5) Download +5) Download https://sheetjs.com/pres.xlsx 6) Create a project in Airtable using "Quickly upload". Select "Microsoft Excel" and select the downloaded file from step 1. Click "Upload", then "Import". diff --git a/docz/docs/03-demos/32-extensions/01-extendscript.md b/docz/docs/03-demos/32-extensions/01-extendscript.md index 3312f09..5c04fb5 100644 --- a/docz/docs/03-demos/32-extensions/01-extendscript.md +++ b/docz/docs/03-demos/32-extensions/01-extendscript.md @@ -74,7 +74,8 @@ if(!thisFile) { alert("File not found!"); return; } var workbook = XLSX.readFile(thisFile.absoluteURI); ``` -
      Complete Example (click to hide) +
      + Complete Example (click to hide) @@ -156,7 +157,8 @@ if(!thisFile) { alert("File not found!"); return; } XLSX.writeFile(workbook, thisFile.absoluteURI); ``` -
      Complete Example (click to hide) +
      + Complete Example (click to hide) @@ -278,7 +280,8 @@ const data = cep.fs.readFile(fn.data[0], cep.encoding.Base64); const wb = XLSX.read(data.data, { type: "base64" }); ``` -
      Complete Example (click to hide) +
      + Complete Example (click to hide) @@ -292,7 +295,7 @@ If prompted, give administrator privileges. 2) Download and open [`Template.idml`](pathname:///extendscript/Template.idml) -3) Download +3) Download https://sheetjs.com/pres.xlsx 4) Show the extension (in the menu bar, select Window > Extensions > SheetJS) @@ -327,7 +330,8 @@ const fn = cep.fs.showSaveDialogEx("Save File","",["xlsx"],"SheetJSIDCEP.xlsx"); cep.fs.writeFile(fn.data, b64, cep.encoding.Base64); ``` -
      Complete Example (click to hide) +
      + Complete Example (click to hide) @@ -386,7 +390,8 @@ const ab = await file.read({ format: storage.formats.binary }); const wb = XLSX.read(ab); ``` -
      Complete Example (click to hide) +
      + Complete Example (click to hide) @@ -404,7 +409,7 @@ Move them to the Scripts Panel folder. 2) Download and open [`Template.idml`](pathname:///extendscript/Template.idml) -3) Download +3) Download https://sheetjs.com/pres.xlsx 4) In the Scripts Panel, double-click "parse". Select the downloaded `pres.xlsx` in the file picker. @@ -444,7 +449,8 @@ const file = await ufs.getFileForSaving("SheetJSUXP.xlsx"); await file.write(buf, { data: storage.formats.binary }); ``` -
      Complete Example (click to hide) +
      + Complete Example (click to hide) diff --git a/docz/docs/03-demos/32-extensions/02-chromium.md b/docz/docs/03-demos/32-extensions/02-chromium.md index 7b99fe4..cf140bf 100644 --- a/docz/docs/03-demos/32-extensions/02-chromium.md +++ b/docz/docs/03-demos/32-extensions/02-chromium.md @@ -325,9 +325,10 @@ chrome.runtime.onMessage.addListener(function(msg, sender, cb) { ### Bookmark Exporter -
      Testing (click to hide) +
      + Testing (click to hide) -0) Open in the browser and create a bookmark. +0) Open https://sheetjs.com in the browser and create a bookmark. 1) Click the Extensions icon (puzzle icon to the right of the address bar) and select "SheetJS Demo". @@ -380,9 +381,10 @@ chrome.bookmarks.getTree(function(res) { ### Table Exporter -
      Testing (click to hide) +
      + Testing (click to hide) -1) Open in the browser. +1) Open https://sheetjs.com/demo/table in the browser. 2) Right-click anywhere in the page and select "SheetJS Demo" > "Export All Tables in Page" diff --git a/docz/docs/03-demos/32-extensions/09-mathematica.md b/docz/docs/03-demos/32-extensions/09-mathematica.md index 7e517b7..d521daa 100644 --- a/docz/docs/03-demos/32-extensions/09-mathematica.md +++ b/docz/docs/03-demos/32-extensions/09-mathematica.md @@ -131,7 +131,8 @@ SheetJSImportFileEE[filename_]:=Module[{csv}, ( -
      How to run the example (click to hide) +
      + How to run the example (click to hide) :::note Tested Deployments @@ -300,7 +301,7 @@ The `\` characters must be doubled. -4) Download and save to Downloads folder: +4) Download https://sheetjs.com/pres.numbers and save to Downloads folder: ```bash cd ~/Downloads/ diff --git a/docz/docs/03-demos/32-extensions/11-matlab.md b/docz/docs/03-demos/32-extensions/11-matlab.md index 6b1d951..edab1d7 100644 --- a/docz/docs/03-demos/32-extensions/11-matlab.md +++ b/docz/docs/03-demos/32-extensions/11-matlab.md @@ -209,7 +209,7 @@ mkdir -p ~/Documents/MATLAB/ mv xlsx-cli ~/Documents/MATLAB/ ``` -3) Download and save to Downloads folder: +3) Download https://sheetjs.com/pres.numbers and save to Downloads folder: ```bash cd ~/Downloads/ diff --git a/docz/docs/03-demos/37-bigdata/01-stream.md b/docz/docs/03-demos/37-bigdata/01-stream.md index 599cb0d..aee0215 100644 --- a/docz/docs/03-demos/37-bigdata/01-stream.md +++ b/docz/docs/03-demos/37-bigdata/01-stream.md @@ -25,7 +25,8 @@ var dense_wb = XLSX.read(ab, {dense: true}); var dense_sheet = XLSX.utils.aoa_to_sheet(aoa, {dense: true}); ``` -
      Historical Note (click to show) +
      + Historical Note (click to show) The earliest versions of the library aimed for IE6+ compatibility. In early testing, both in Chrome 26 and in IE6, the most efficient worksheet storage for @@ -53,7 +54,8 @@ take the same arguments as the normal write functions: "Stream" refers to the NodeJS push streams API. -
      Historical Note (click to show) +
      + Historical Note (click to show) NodeJS push streams were introduced in 2012. The text streaming methods `to_csv` and `to_html` are supported in NodeJS v0.10 and later while the object streaming @@ -184,7 +186,8 @@ curl -LO https://sheetjs.com/pres.xlsx node SheetJSNodeJStream.js pres.xlsx ``` -
      Expected Output (click to show) +
      + Expected Output (click to show) The console will display a list of objects: @@ -250,7 +253,8 @@ For processing large files in the browser, it is strongly encouraged to use Web Workers. The [Worker demo](/docs/demos/bigdata/worker#streaming-write) includes examples using the File System Access API. -
      Web Worker Details (click to show) +
      + Web Worker Details (click to show) Typically, the file and stream processing occurs in the Web Worker. CSV rows can be sent back to the main thread in the callback: @@ -454,7 +458,7 @@ This demo was last tested on 2024-02-23 against Deno `1.41.0`. ::: [`SheetJSDenoStream.ts`](pathname:///stream/SheetJSDenoStream.ts) is a small -example script that downloads and prints +example script that downloads https://sheetjs.com/pres.numbers and prints CSV row objects. 1) Run the script: diff --git a/docz/docs/03-demos/37-bigdata/02-worker.md b/docz/docs/03-demos/37-bigdata/02-worker.md index 187ca06..ce5812b 100644 --- a/docz/docs/03-demos/37-bigdata/02-worker.md +++ b/docz/docs/03-demos/37-bigdata/02-worker.md @@ -81,7 +81,8 @@ Due to limitations of the live code blocks, all of the workers in this section are in-line. The code is embedded in template literals. For production sites, typically workers are written in separate JS files. -
      Example (click to show) +
      + Example (click to show) For example, an in-line worker like @@ -132,7 +133,8 @@ importScripts("https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.mi For production use, it is highly encouraged to download and host the script. -
      ECMAScript Module Support (click to hide) +
      + ECMAScript Module Support (click to hide) :::note Browser Compatibility @@ -231,11 +233,12 @@ sequenceDiagram deactivate Page ``` -
      Live Demo (click to show) +
      + Live Demo (click to show) In the following example, the script: -- downloads in a Web Worker +- downloads https://sheetjs.com/pres.numbers in a Web Worker - loads the SheetJS library and parses the file in the Worker - generates an HTML string of the first table in the Worker - sends the string to the main browser context @@ -321,7 +324,8 @@ sequenceDiagram deactivate Page ``` -
      Live Demo (click to show) +
      + Live Demo (click to show) In the following example, the script: @@ -426,7 +430,8 @@ sequenceDiagram deactivate Page ``` -
      Live Demo (click to show) +
      + Live Demo (click to show) In the following example, when a file is dropped over the DIV or when the INPUT element is used to select a file, the script: @@ -548,7 +553,8 @@ sequenceDiagram ``` -
      Live Demo (click to show) +
      + Live Demo (click to show) The following live demo fetches and parses a file in a Web Worker. The script: diff --git a/docz/docs/03-demos/42-engines/01-duktape.md b/docz/docs/03-demos/42-engines/01-duktape.md index bab49ae..1de3700 100644 --- a/docz/docs/03-demos/42-engines/01-duktape.md +++ b/docz/docs/03-demos/42-engines/01-duktape.md @@ -757,7 +757,7 @@ mkdir sheetjs-zig cd sheetjs-zig ``` -1) Download Zig 0.11.0 from and extract to the +1) Download Zig 0.11.0 from https://ziglang.org/download/ and extract to the project folder. diff --git a/docz/docs/03-demos/42-engines/04-jsc.md b/docz/docs/03-demos/42-engines/04-jsc.md index b02261e..d7de6a0 100644 --- a/docz/docs/03-demos/42-engines/04-jsc.md +++ b/docz/docs/03-demos/42-engines/04-jsc.md @@ -77,7 +77,8 @@ context.setObject(data, forKeyedSubscript: "payload" as (NSCopying & NSObjectPro context.evaluateScript("var wb = XLSX.read(payload, {type:'binary'});"); ``` -
      Direct Read (click to show) +
      + Direct Read (click to show) `Uint8Array` data can be passed directly, skipping string encoding and decoding: diff --git a/docz/docs/03-demos/42-engines/05-jint.md b/docz/docs/03-demos/42-engines/05-jint.md index 8ca88a2..355e986 100644 --- a/docz/docs/03-demos/42-engines/05-jint.md +++ b/docz/docs/03-demos/42-engines/05-jint.md @@ -176,7 +176,8 @@ This demo was tested in the following deployments: 0) Set the `DOTNET_CLI_TELEMETRY_OPTOUT` environment variable to `1`. -
      How to disable telemetry (click to hide) +
      + How to disable telemetry (click to hide) @@ -209,7 +210,8 @@ Click "OK" in each window (3 windows) and restart your computer. 1) Install .NET -
      Installation Notes (click to show) +
      + Installation Notes (click to show) For macOS x64 and ARM64, install the `dotnet-sdk` Cask with Homebrew: @@ -224,7 +226,7 @@ For Steam Deck Holo and other Arch Linux x64 distributions, the `dotnet-sdk` and sudo pacman -Syu dotnet-sdk dotnet-runtime ``` - is the official source +https://dotnet.microsoft.com/en-us/download/dotnet/6.0 is the official source for Windows and ARM64 Linux versions.
      @@ -384,7 +386,8 @@ tested platforms are listed below: 9) Build the standalone application. -
      Tested platforms (click to hide) +
      + Tested platforms (click to hide) @@ -451,7 +454,8 @@ The binary name will be `SheetJSJint` or `SheetJSJint.exe` depending on OS. The last line of the output from Step 9 will print the output folder. -
      Tested platforms (click to hide) +
      + Tested platforms (click to hide) diff --git a/docz/docs/03-demos/42-engines/08-quickjs.md b/docz/docs/03-demos/42-engines/08-quickjs.md index ca1de25..a4164d8 100644 --- a/docz/docs/03-demos/42-engines/08-quickjs.md +++ b/docz/docs/03-demos/42-engines/08-quickjs.md @@ -51,7 +51,8 @@ QuickJS provides a `global` object through `JS_GetGlobalObject`: JSValue global = JS_GetGlobalObject(ctx); ``` -
      Cleanup (click to show) +
      + Cleanup (click to show) Once finished, programs are expected to cleanup by using `JS_FreeValue` to free values, `JS_FreeContext` to free the context pointer, and `JS_FreeRuntime` to diff --git a/docz/docs/03-demos/42-engines/09-hermes.md b/docz/docs/03-demos/42-engines/09-hermes.md index 668097c..b01df40 100644 --- a/docz/docs/03-demos/42-engines/09-hermes.md +++ b/docz/docs/03-demos/42-engines/09-hermes.md @@ -382,7 +382,8 @@ The ["Windows Example"](#windows-example) covers `hermes-windows`. 0) Install [dependencies](https://hermesengine.dev/docs/building-and-running/#dependencies) -
      Installation Notes (click to show) +
      + Installation Notes (click to show) The official guidance[^6] has been verified in macOS and HoloOS (Linux). @@ -542,7 +543,8 @@ contents of the first sheet as CSV rows. 0) Install dependencies. -
      Installation Notes (click to show) +
      + Installation Notes (click to show) The build sequence requires Python, which can be installed from the official Windows installer[^7]. @@ -573,7 +575,8 @@ should be extracted along with the normal files. Add the path `c:\src\depot_tools\` to the User `PATH` environment variable -
      Environment Variable Setup (click to show) +
      + Environment Variable Setup (click to show) Type `env` in the search bar and select "Edit the system environment variables". diff --git a/docz/docs/03-demos/42-engines/23-jerryscript.md b/docz/docs/03-demos/42-engines/23-jerryscript.md index 9549888..6670eae 100644 --- a/docz/docs/03-demos/42-engines/23-jerryscript.md +++ b/docz/docs/03-demos/42-engines/23-jerryscript.md @@ -25,8 +25,8 @@ command-line tool for reading data from files. This demo requires a much larger heap size than is normally used in JerryScript deployments! In local testing, the following sizes were needed: -- 8192 (8M) for -- 65536 (64M) for +- 8192 (8M) for https://sheetjs.com/pres.xlsx +- 65536 (64M) for https://sheetjs.com/pres.numbers ::: @@ -341,7 +341,8 @@ while the "CLI Test" demonstrates other concepts using the `jerry` CLI tool. ### Integration Example -
      Build Dependencies (click to show) +
      + Build Dependencies (click to show) The JerryScript build system requires `cmake`. diff --git a/docz/docs/06-solutions/01-input.md b/docz/docs/06-solutions/01-input.md index d548986..37cba5c 100644 --- a/docz/docs/06-solutions/01-input.md +++ b/docz/docs/06-solutions/01-input.md @@ -236,7 +236,7 @@ input_dom_element.addEventListener("change", handleFileAsync, false); - demonstrates the FileReader technique. +https://oss.sheetjs.com/sheetjs/ demonstrates the FileReader technique. **For maximal compatibility (IE10+)**, the `FileReader` approach is recommended: @@ -436,7 +436,7 @@ req.send(); The [`xhr` demo](/docs/demos/network) includes a longer discussion and more examples. - shows fallback approaches for IE6+. +https://oss.sheetjs.com/sheetjs/ajax.html shows fallback approaches for IE6+. @@ -565,7 +565,8 @@ req.end(); The recommended approach is to buffer streams in memory and process once all of the data has been collected. A proper streaming parse is technically impossible. -
      Technical details (click to show) +
      + Technical details (click to show) XLSX, XLSB, NUMBERS, and ODS files are ultimately ZIP files that contain binary and XML entries. The ZIP file format stores the table of contents ("end of diff --git a/docz/docs/06-solutions/05-output.md b/docz/docs/06-solutions/05-output.md index 418cad5..70f527c 100644 --- a/docz/docs/06-solutions/05-output.md +++ b/docz/docs/06-solutions/05-output.md @@ -335,7 +335,8 @@ res.setHeader('Content-Type', 'application/vnd.ms-excel'); res.end(buf); ``` -
      Complete Example (click to show) +
      + Complete Example (click to show) Install the library with @@ -392,7 +393,8 @@ evt.respondWith(new Response(buf, { })); ``` -
      Complete Example (click to show) +
      + Complete Example (click to show) Save the following script to `deno.ts` and run with `deno run -A deno.ts`. Open a web browser and access `http://localhost:7262/` to download the workbook. @@ -445,7 +447,8 @@ return new Response(buf, { }); ``` -
      Complete Example (click to show) +
      + Complete Example (click to show)

      Download xlsx.mjs. Save the following script to bun.js and run with bun bun.js. Open a web diff --git a/docz/docs/07-csf/03-sheet.md b/docz/docs/07-csf/03-sheet.md index f37c152..4e57639 100644 --- a/docz/docs/07-csf/03-sheet.md +++ b/docz/docs/07-csf/03-sheet.md @@ -33,7 +33,8 @@ When processing small worksheets in older environments, sparse worksheets are more efficient than dense worksheets. In newer browsers, when dealing with very large worksheets, dense sheets use less memory and tend to be more efficient. -

      Migrating to Dense Mode (click to show) +
      + Migrating to Dense Mode (click to show) `read`, `readFile`, `write`, `writeFile`, and the various API functions support sparse and dense worksheets. Functions that accept worksheet or workbook objects diff --git a/docz/docs/07-csf/04-book.md b/docz/docs/07-csf/04-book.md index fbcfbad..43be47f 100644 --- a/docz/docs/07-csf/04-book.md +++ b/docz/docs/07-csf/04-book.md @@ -24,7 +24,8 @@ When reading a file, `wb.bookType` is the determined book type. The various file formats use different internal names for file properties. The workbook `Props` object normalizes the names: -
      File Properties (click to hide) +
      + File Properties (click to hide) | JS Name | Excel Description | |:--------------|:-------------------------------| diff --git a/docz/docs/07-csf/07-features/01-dates.md b/docz/docs/07-csf/07-features/01-dates.md index b128f75..0ab21ba 100644 --- a/docz/docs/07-csf/07-features/01-dates.md +++ b/docz/docs/07-csf/07-features/01-dates.md @@ -6,7 +6,8 @@ sidebar_position: 1 import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -
      File Format Support (click to show) +
      + File Format Support (click to show) Dates are a core concept in nearly every spreadsheet application in existence. Some legacy spreadsheet apps only supported dates. Others supported times as a @@ -191,7 +192,8 @@ the date code. The following table covers some common formats: -
      Common Date-Time Formats (click to show) +
      + Common Date-Time Formats (click to show) | Fragment | Interpretation | |:---------|:-----------------------------| @@ -253,7 +255,8 @@ if(!(wb?.Workbook?.WBProps?.date1904)) { } ``` -
      Why does the 1904 date system exist? (click to show) +
      + Why does the 1904 date system exist? (click to show) 1900 was not a leap year. For the Gregorian calendar, the general rules are: - every multiple of 400 is a leap year @@ -291,7 +294,8 @@ of universal time. ## How Files Store Dates and Times -
      Technical Details (click to show) +
      + Technical Details (click to show) XLS, XLSB, and most binary formats store the raw date codes. Special number formats are used to indicate that the values are intended to be dates/times. @@ -551,7 +555,8 @@ XLSX.SSF.is_date("yyyy-mm-dd"); // true XLSX.SSF.is_date("0.00"); // false ``` -
      Live Demo (click to show) +
      + Live Demo (click to show) ```jsx live function SSFIsDate() { diff --git a/docz/docs/07-csf/07-features/02-formulae.md b/docz/docs/07-csf/07-features/02-formulae.md index e0d5253..e096578 100644 --- a/docz/docs/07-csf/07-features/02-formulae.md +++ b/docz/docs/07-csf/07-features/02-formulae.md @@ -7,7 +7,8 @@ sidebar_position: 2 import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -
      File Format Support (click to show) +
      + File Format Support (click to show) The parser will translate from the storage representation to A1-Style strings, while the writer will translate from A1-Style strings to the file format. @@ -133,7 +134,8 @@ SheetJS formulae omit the `=`. ["A1-Style"](/docs/csf/general#a1-style) describes A1-Style in more detail. -
      Live Example (click to hide) +
      + Live Example (click to hide) For example, consider [this test file](pathname:///files/concat.xlsx): @@ -199,7 +201,8 @@ var worksheet = XLSX.utils.aoa_to_sheet([ ]); ``` -
      Live Example (click to hide) +
      + Live Example (click to hide) This demo creates a worksheet where `A1=1`, `A2=2`, and `A3=A1+A2`. @@ -287,7 +290,8 @@ Utilities and writers are expected to check for the presence of a `F` field and ignore any possible formula element `f` in cells other than the starting cell. They are not expected to perform validation of the formulae! -
      Live Example (click to show) +
      + Live Example (click to show) ```jsx live /* The live editor requires this function wrapper */ @@ -352,7 +356,8 @@ XLSX.utils.sheet_set_array_formula(worksheet, "C1", "_xlfn.UNIQUE(A1:A3)", 1); worksheet["C1"] = { t: "s", f: "_xlfn.UNIQUE(A1:A3)", F:"C1", D: 1 }; // dynamic ``` -
      Live Example (click to show) +
      + Live Example (click to show) ```jsx live /* The live editor requires this function wrapper */ @@ -405,7 +410,8 @@ formula `=CONTAR(A1:C3;B4:D6)` is equivalent to the SheetJS formula string [JSON Translation table](https://oss.sheetjs.com/notes/fmla/table.json). -
      Function Name Translator (click to hide) +
      + Function Name Translator (click to hide) ```jsx live /* The live editor requires this function wrapper */ diff --git a/docz/docs/07-csf/07-features/03-hyperlinks.md b/docz/docs/07-csf/07-features/03-hyperlinks.md index b506932..6b576e1 100644 --- a/docz/docs/07-csf/07-features/03-hyperlinks.md +++ b/docz/docs/07-csf/07-features/03-hyperlinks.md @@ -4,7 +4,8 @@ sidebar_label: Hyperlinks sidebar_position: 3 --- -
      File Format Support (click to show) +
      + File Format Support (click to show) Traditional spreadsheet software, including Excel, support "Cell Links". The entire cell text is clickable. @@ -43,7 +44,7 @@ objects include the following fields: - `Tooltip` is the tooltip text. Tooltips are shown when hovering over the text. For example, the following snippet creates a link from cell `A1` to - with the tip `"Find us @ SheetJS.com!"`: +https://sheetjs.com with the tip `"Find us @ SheetJS.com!"`: ```js /* create worksheet with cell A1 = "https://sheetjs.com" */ @@ -91,7 +92,8 @@ ws["A2"].l = { Target: "https://docs.sheetjs.com/docs/csf/features/hyperlinks#we ws["A3"].l = { Target: "http://localhost:7262/yes_localhost_works" }; ``` -
      Live Example (click to hide) +
      + Live Example (click to hide) ```jsx live /* The live editor requires this function wrapper */ @@ -122,7 +124,8 @@ ws["A4"].l = { Target: "mailto:ignored@dev.null" }; ws["A5"].l = { Target: "mailto:ignored@dev.null?subject=Test Subject" }; ``` -
      Live Example (click to show) +
      + Live Example (click to show) **This demo creates a XLSX spreadsheet with a `mailto` email link. The email address input in the form never leaves your machine.** @@ -190,7 +193,8 @@ ws["C2"].l = { Target: "#Sheet2!E2" }; /* Link to cell E2 in sheet Sheet2 */ ws["C3"].l = { Target: "#SheetJSDName" }; /* Link to Defined Name */ ``` -
      Live Example (click to show) +
      + Live Example (click to show) This demo creates a workbook with two worksheets. In the first worksheet: @@ -256,7 +260,8 @@ files will not open in Excel. The HTML DOM parser[^1] will process `` links in the table. -
      Live Example (click to hide) +
      + Live Example (click to hide) This example uses `table_to_book` to generate a SheetJS workbook object from a HTML table. The hyperlink in the second row will be parsed as a cell-level link. @@ -290,7 +295,8 @@ function ExportHyperlink() { The HTML writer[^2] will generate `` links. -
      Live Example (click to hide) +
      + Live Example (click to hide) This example creates a worksheet where `A1` has a link and `B1` does not. The `sheet_to_html` function generates an HTML table where the topleft table cell @@ -321,7 +327,8 @@ function ExportALinks() { #### Miscellany -
      Extract all links from a file (click to show) +
      + Extract all links from a file (click to show) The following example iterates through each worksheet and each cell to find all links. The table shows sheet name, cell address, and target for each link. diff --git a/docz/docs/07-csf/07-features/04-comments.md b/docz/docs/07-csf/07-features/04-comments.md index 16a315c..8ddb1e3 100644 --- a/docz/docs/07-csf/07-features/04-comments.md +++ b/docz/docs/07-csf/07-features/04-comments.md @@ -4,7 +4,8 @@ sidebar_label: Cell Comments sidebar_position: 4 --- -
      File Format Support (click to show) +
      + File Format Support (click to show) Comments and Notes have evolved over the years. @@ -108,7 +109,8 @@ characters may cause issues with other formats. #### Export -
      Live Export Example (click to hide) +
      + Live Export Example (click to hide) This example creates a small worksheet with a comment in cell A1: @@ -130,7 +132,8 @@ function SheetJSComments1() { #### Import -
      Live Import Example (click to show) +
      + Live Import Example (click to show) This example displays every comment in the workbook: @@ -181,7 +184,8 @@ cell.c.hidden = true; cell.c.push({a:"SheetJS", t:"This comment will be hidden"}); ``` -
      Live Example (click to show) +
      + Live Example (click to show) The following demo creates a worksheet with two comments. The comment in cell A1 will be visibile and the comment in cell A2 will be hidden. @@ -235,7 +239,8 @@ cell.c.push({ ...part2, T: true}); There is no Active Directory or Office 365 metadata associated with authors. -
      Live Example (click to hide) +
      + Live Example (click to hide) ```jsx live function SheetJSThreadedComments() { diff --git a/docz/docs/07-csf/07-features/05-names.md b/docz/docs/07-csf/07-features/05-names.md index 956d871..277150b 100644 --- a/docz/docs/07-csf/07-features/05-names.md +++ b/docz/docs/07-csf/07-features/05-names.md @@ -3,7 +3,8 @@ title: Defined Names sidebar_position: 5 --- -
      File Format Support (click to show) +
      + File Format Support (click to show) Defined names have evolved over the decades, with new features added over time: @@ -29,7 +30,8 @@ Defined names (sometimes called "named ranges") are labeled references to cells, ranges, constants or formulae. Meaningful labels can make formula expressions more readable and more robust to worksheet changes. -
      Why are Defined Names useful? (click to show) +
      + Why are Defined Names useful? (click to show) For example, the `NPV` formula function calculates the net present value of a series of cashflows. In large workbooks, raw data will be stored in separate diff --git a/docz/docs/07-csf/07-features/06-nf.md b/docz/docs/07-csf/07-features/06-nf.md index f586d37..4737ac8 100644 --- a/docz/docs/07-csf/07-features/06-nf.md +++ b/docz/docs/07-csf/07-features/06-nf.md @@ -3,7 +3,8 @@ title: Number Formats sidebar_position: 6 --- -
      File Format Support (click to show) +
      + File Format Support (click to show) Modern applications separate "content" from "presentation". A value like `$3.50` is typically stored as the underlying value (`3.50`) with a format (`$0.00`). diff --git a/docz/docs/07-csf/07-features/07-vba.md b/docz/docs/07-csf/07-features/07-vba.md index 6ea04ff..a02721c 100644 --- a/docz/docs/07-csf/07-features/07-vba.md +++ b/docz/docs/07-csf/07-features/07-vba.md @@ -8,7 +8,8 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; -
      File Format Support (click to show) +
      + File Format Support (click to show) XLSX does not support macros. The XLSM file format is nearly identical to XLSX and supports macros. diff --git a/docz/docs/07-csf/07-features/08-rowprops.md b/docz/docs/07-csf/07-features/08-rowprops.md index b6c84a8..839a41b 100644 --- a/docz/docs/07-csf/07-features/08-rowprops.md +++ b/docz/docs/07-csf/07-features/08-rowprops.md @@ -3,7 +3,8 @@ title: Row Properties sidebar_position: 8 --- -
      File Format Support (click to show) +
      + File Format Support (click to show) By default, all rows in a workbook are "Visible" and have a standard height. @@ -56,7 +57,8 @@ and row outline levels. -
      Export Demo (click to show) +
      + Export Demo (click to show) The table lists the assigned heights, outline levels and visibility settings. @@ -344,7 +346,8 @@ ws["!outline"].above = true; // show summary rows above detail ## Implementation Details -
      Details (click to show) +
      + Details (click to show) Excel internally stores row heights in points. The default resolution is 72 DPI or 96 PPI, so the pixel and point size should agree. For different resolutions diff --git a/docz/docs/07-csf/07-features/09-colprops.md b/docz/docs/07-csf/07-features/09-colprops.md index 5a2f173..369ff7a 100644 --- a/docz/docs/07-csf/07-features/09-colprops.md +++ b/docz/docs/07-csf/07-features/09-colprops.md @@ -3,7 +3,8 @@ title: Column Properties sidebar_position: 9 --- -
      File Format Support (click to show) +
      + File Format Support (click to show) By default, all columns in a workbook are "Visible" and have a standard width. @@ -64,7 +65,8 @@ columns, and column outline levels. -
      Export Demo (click to show) +
      + Export Demo (click to show) The table lists the assigned widths, outline levels and visibility settings. @@ -211,7 +213,8 @@ font settings. ::: -
      MDW (Max Digit Width) (click to show) +
      + MDW (Max Digit Width) (click to show) **`MDW`** @@ -376,7 +379,8 @@ ws["!outline"].left = true; // show summary to left of detail ## Implementation Details -
      Details (click to show) +
      + Details (click to show) **Three Width Types** diff --git a/docz/docs/07-csf/07-features/10-visibility.md b/docz/docs/07-csf/07-features/10-visibility.md index 0e0abf1..e8c7bad 100644 --- a/docz/docs/07-csf/07-features/10-visibility.md +++ b/docz/docs/07-csf/07-features/10-visibility.md @@ -3,7 +3,8 @@ title: Sheet Visibility sidebar_position: 10 --- -
      File Format Support (click to show) +
      + File Format Support (click to show) By default, all sheets in a workbook are "Visible". The standard "Hidden" state is controlled through the context menu in the sheet tab bar. The "Very Hidden" diff --git a/docz/docs/08-api/05-write-options.md b/docz/docs/08-api/05-write-options.md index fb4d0df..b47950d 100644 --- a/docz/docs/08-api/05-write-options.md +++ b/docz/docs/08-api/05-write-options.md @@ -39,7 +39,8 @@ size of the production site. The general `write` and `writeFile` functions are more appropriate when exporting to XLS or XLSB or other formats. -
      NodeJS-specific methods (click to show) +
      + NodeJS-specific methods (click to show) **`XLSX.writeFileAsync(filename, wb, cb)`** diff --git a/docz/docs/08-api/07-utilities/03-html.md b/docz/docs/08-api/07-utilities/03-html.md index b8361bb..f969617 100644 --- a/docz/docs/08-api/07-utilities/03-html.md +++ b/docz/docs/08-api/07-utilities/03-html.md @@ -126,7 +126,8 @@ var wb = XLSX.utils.table_to_book(tbl); XLSX.writeFile(wb, "SheetJSTable.xlsx"); ``` -
      Demo (click to hide) +
      + Demo (click to hide) This HTML table has id set to `sheetjs`: @@ -197,7 +198,8 @@ const table2 = document.getElementById('table2'); XLSX.utils.sheet_add_dom(ws, table2, {origin: -1}); ``` -
      Multi-table Export Example (click to show) +
      + Multi-table Export Example (click to show) This demo creates a worksheet that should look like the screenshot below: @@ -286,7 +288,8 @@ var ws = XLSX.utils.table_to_sheet(elt.getElementsByTagName("TABLE")[0]); document.body.removeChild(elt); ``` -
      Phantasm Demo (click to show) +
      + Phantasm Demo (click to show) The `html` variable in the demo is an editable HTML string @@ -332,7 +335,8 @@ var wb = XLSX.read(html_source, { type: "string" }); var ws = wb.Sheets[wb.SheetNames[0]]; ``` -
      Raw HTML Demo (click to show) +
      + Raw HTML Demo (click to show) The `html` variable in the demo is an editable HTML string @@ -393,7 +397,8 @@ For example: 2012-12-03 ``` -
      HTML Value Examples (click to hide) +
      + HTML Value Examples (click to hide) ```jsx live function SheetJSHTMLValueOverride() { diff --git a/docz/docs/09-miscellany/01-formats.md b/docz/docs/09-miscellany/01-formats.md index bf7ef50..0059059 100644 --- a/docz/docs/09-miscellany/01-formats.md +++ b/docz/docs/09-miscellany/01-formats.md @@ -235,7 +235,7 @@ reader understands DBF Level 7 extensions like `DATETIME`. #### Symbolic Link (SYLK) - is an informal specification based on our +https://oss.sheetjs.com/notes/sylk/ is an informal specification based on our experimentation and previous documentation efforts. #### Lotus Formatted Text (PRN) diff --git a/docz/docs/09-miscellany/02-errors.md b/docz/docs/09-miscellany/02-errors.md index 04b493d..270baba 100644 --- a/docz/docs/09-miscellany/02-errors.md +++ b/docz/docs/09-miscellany/02-errors.md @@ -46,7 +46,8 @@ was not properly loaded. If the error shows up while using the latest version, projects may require other configuration or loading strategies. -
      Upgrade Note (click to show) +
      + Upgrade Note (click to show) Older versions of the library only shipped with CommonJS and standalone script. Webpack and other bundlers supported CommonJS dependencies with default import: @@ -240,7 +241,8 @@ Applications specifically targeting legacy browsers like IE10 should use Old versions of the library did not automatically detect `ArrayBuffer` objects. -
      Workaround (click to show) +
      + Workaround (click to show) :::warning Legacy workaround @@ -299,7 +301,8 @@ a known issue with Google Tag Manager (GTM) rewriting links. There is a special Third party libraries like `FileSaver.js` provide an implementation of `saveAs` that include more browser-specific workarounds. -
      FileSaver.js integration (click to show) +
      + FileSaver.js integration (click to show) _Standalone Build_ @@ -395,7 +398,8 @@ function update_sheet_range(ws) { } ``` -
      More Code Snippets (click to show) +
      + More Code Snippets (click to show) `set_sheet_range` changes a sheet's range given a general target spec that can include only the start or end cell: diff --git a/docz/docs/09-miscellany/03-source.md b/docz/docs/09-miscellany/03-source.md index 1335679..3c946f7 100644 --- a/docz/docs/09-miscellany/03-source.md +++ b/docz/docs/09-miscellany/03-source.md @@ -4,9 +4,9 @@ title: Source Code hide_table_of_contents: true --- -The official source code repository is +The official source code repository is https://git.sheetjs.com/sheetjs/sheetjs -Issues should be raised at +Issues should be raised at https://git.sheetjs.com/sheetjs/sheetjs/issues Issues can also be reported on [our Discord server](https://sheetjs.com/chat) diff --git a/docz/docs/09-miscellany/05-contributing.md b/docz/docs/09-miscellany/05-contributing.md index 1688120..a5296b4 100644 --- a/docz/docs/09-miscellany/05-contributing.md +++ b/docz/docs/09-miscellany/05-contributing.md @@ -64,7 +64,8 @@ import TabItem from '@theme/TabItem'; A) Ensure WSL ("WSL 2" in Windows 10) and the Ubuntu distribution are installed. -
      Installation Notes (click to hide) +
      + Installation Notes (click to hide) In "Turn Windows features on or off", the following features must be enabled: @@ -248,7 +249,8 @@ sudo apt-get install curl git build-essential Other Linux distributions may use other package managers. -
      Steam Deck (click to hide) +
      + Steam Deck (click to hide) Desktop Mode on the Steam Deck uses `pacman`. It also requires a few steps. diff --git a/docz/docs/09-miscellany/07-license.md b/docz/docs/09-miscellany/07-license.md index 5268ecc..51d1886 100644 --- a/docz/docs/09-miscellany/07-license.md +++ b/docz/docs/09-miscellany/07-license.md @@ -34,7 +34,8 @@ See the License for the specific language governing permissions and limitations under the License. ``` -
      Complete License Text (click to show) +
      + Complete License Text (click to show) ``` Apache License diff --git a/docz/docs/09-miscellany/08-references.md b/docz/docs/09-miscellany/08-references.md index 828b089..292862a 100644 --- a/docz/docs/09-miscellany/08-references.md +++ b/docz/docs/09-miscellany/08-references.md @@ -5,7 +5,7 @@ hide_table_of_contents: true # References -Some of our original research is documented at +Some of our original research is documented at https://oss.sheetjs.com/notes/ The specifications list is non-exhaustive. @@ -30,7 +30,8 @@ Lotus dedicated the "Worksheet File Format" documentation to the Public Domain. Microsoft opted for the "Open Specifications Promise", a covenant not to sue. The documentation that falls under the promise are listed below. -
      Specifications (click to show) +
      + Specifications (click to show) - `MS-CFB`: Compound File Binary File Format - `MS-CTXLS`: Excel Custom Toolbar Binary File Format @@ -62,5 +63,5 @@ The documentation that falls under the promise are listed below. - ISBN 1556156324 "Excel Developer's Kit Version 5" [^1]: The original FTP server is no longer available, but the content has been - mirrored at . Lotus Corporation + mirrored at https://oss.sheetjs.com/notes/lotus/. Lotus Corporation dedicated the content to the public domain in 1984. \ No newline at end of file diff --git a/docz/docs/12-constellation/01-ssf.md b/docz/docs/12-constellation/01-ssf.md index 3e6d253..c306cf3 100644 --- a/docz/docs/12-constellation/01-ssf.md +++ b/docz/docs/12-constellation/01-ssf.md @@ -22,7 +22,7 @@ and `sheet_to_json`[^4]. The library is also available for standalone use on the SheetJS CDN[^5]. Source code and project documentation are hosted on the SheetJS git server at - +https://git.sheetjs.com/sheetjs/sheetjs/src/branch/master/packages/ssf ## Live Demo @@ -66,4 +66,4 @@ function SheetJSSSF() { [^2]: See [`read` in "Reading Files"](/docs/api/parse-options) [^3]: See [`write` in "Writing Files"](/docs/api/write-options) [^4]: See [`sheet_to_json` in "Utilities"](/docs/api/utilities/array#array-output) -[^5]: See for more details. \ No newline at end of file +[^5]: See https://cdn.sheetjs.com/ssf/ for more details. \ No newline at end of file diff --git a/docz/docs/12-constellation/11-crc32.md b/docz/docs/12-constellation/11-crc32.md index f78508c..29edcfd 100644 --- a/docz/docs/12-constellation/11-crc32.md +++ b/docz/docs/12-constellation/11-crc32.md @@ -14,14 +14,14 @@ ODS, NUMBERS, and other formats. The library is also available for standalone use on the SheetJS CDN[^1]. Source code and project documentation are hosted on the SheetJS git server at - +https://git.sheetjs.com/sheetjs/js-crc32 #### Live Demos - computes checksums of files and text. +https://oss.sheetjs.com/js-crc32/ computes checksums of files and text. - uses incremental file processing and +https://oss.sheetjs.com/js-crc32/large uses incremental file processing and Web Workers to compute checksums of large files. Since the file is processed in chunks, it is possible to compute checksums of files larger than 4GB. -[^1]: See for more details. \ No newline at end of file +[^1]: See https://cdn.sheetjs.com/crc-32/ for more details. \ No newline at end of file diff --git a/docz/docs/12-constellation/21-dta.md b/docz/docs/12-constellation/21-dta.md index 8790318..10febee 100644 --- a/docz/docs/12-constellation/21-dta.md +++ b/docz/docs/12-constellation/21-dta.md @@ -23,7 +23,7 @@ The SheetJS DTA codec enables websites and automated data pipelines to integrate data from DTA files. Source code and project documentation are hosted on the SheetJS git server at - +https://git.sheetjs.com/sheetjs/sheetjs/src/branch/master/packages/dta :::caution DTA support is considered experimental. diff --git a/docz/docs/index.md b/docz/docs/index.md index 0513f6c..8640ee5 100644 --- a/docz/docs/index.md +++ b/docz/docs/index.md @@ -27,7 +27,8 @@ run entirely in the web browser. ### Export an HTML Table to Excel XLSX -
      How to add to your site (click to show) +
      + How to add to your site (click to show) @@ -176,14 +177,16 @@ function App() {
      -
      How to automate with NodeJS (click to show) +
      + How to automate with NodeJS (click to show) [The "Headless Automation" demo](/docs/demos/net/headless) includes complete examples using the `puppeteer` and `playwright` browser automation frameworks.
      -
      Live Example (click to hide) +
      + Live Example (click to hide) This example uses a ReactJS `ref` to reference the HTML TABLE element. ReactJS details are covered in the [ReactJS demo](/docs/demos/frontend/react#html) @@ -224,7 +227,8 @@ support for CSS styling and rich text. ### Download and Preview Apple Numbers Workbooks -
      How to add to your site (click to show) +
      + How to add to your site (click to show) 1) Create a container DIV for the table: @@ -261,9 +265,10 @@ support for CSS styling and rich text.
      -
      Live Example (click to hide) +
      + Live Example (click to hide) -This demo processes +This demo processes https://sheetjs.com/pres.numbers ```jsx live /* The live editor requires this function wrapper */ @@ -295,7 +300,8 @@ support for CSS styling and rich text. ### Preview a workbook on your device -
      Live Example (click to hide) +
      + Live Example (click to hide) This example starts from a CSV string. Use the File Input element to select a workbook to load. Use the "Export XLSX" button to write the table to XLSX.