From f270ad6b3f2e14527f2a7a77a4409749a491fb15 Mon Sep 17 00:00:00 2001 From: SheetJS <dev@sheetjs.com> Date: Fri, 18 Aug 2023 16:39:12 -0400 Subject: [PATCH] drash-moved --- .../01-installation/06-deno.md | 2 +- .../02-examples/02-export.mdx | 2 +- .../docs/03-demos/01-frontend/07-angularjs.md | 2 +- .../03-demos/02-grid/{17-gdg.md => 14-gdg.md} | 0 docz/docs/03-demos/03-net/02-server.md | 43 +++- docz/docs/03-demos/04-static/11-svelte.md | 16 +- docz/docs/03-demos/04-static/12-astro.md | 30 +-- .../docs/03-demos/05-mobile/01-reactnative.md | 8 +- docz/docs/03-demos/05-mobile/06-flutter.md | 207 ++++++++++++++++-- docz/docs/03-demos/06-desktop/09-cli.md | 8 +- docz/docs/03-demos/09-cloud/19-deno.md | 2 +- docz/docs/03-demos/12-engines/02_v8.md | 2 +- docz/docs/06-solutions/01-input.md | 2 +- docz/docs/07-csf/02-cell.md | 13 +- docz/docs/07-csf/07-features/07-vba.md | 4 +- docz/static/deno/s2c.ts | 4 +- docz/static/flutter/and.png | Bin 0 -> 70898 bytes docz/static/server/SheetJSDrash.ts | 4 +- 18 files changed, 263 insertions(+), 86 deletions(-) rename docz/docs/03-demos/02-grid/{17-gdg.md => 14-gdg.md} (100%) create mode 100644 docz/static/flutter/and.png 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 29c8544..7ad2b35 100644 --- a/docz/docs/02-getting-started/01-installation/06-deno.md +++ b/docz/docs/02-getting-started/01-installation/06-deno.md @@ -68,7 +68,7 @@ and the types URLs should be updated at the same time: #### Deno Registry -:::warning +:::warning pass The official Deno registry is out of date. This is a registry bug. 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 753918c..4b88522 100644 --- a/docz/docs/02-getting-started/02-examples/02-export.mdx +++ b/docz/docs/02-getting-started/02-examples/02-export.mdx @@ -1150,7 +1150,7 @@ see a preview of the data. The Numbers app can open the file. [^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) +[^2]: See ["The Executive Branch"](https://github.com/unitedstates/congress-legislators#the-executive-branch) in the dataset documentation. [^3]: See [`json_to_sheet` in "Utilities"](/docs/api/utilities/array#array-of-objects-input) [^4]: See [`book_new` in "Utilities"](/docs/api/utilities/wb) diff --git a/docz/docs/03-demos/01-frontend/07-angularjs.md b/docz/docs/03-demos/01-frontend/07-angularjs.md index e48c940..168a2b5 100644 --- a/docz/docs/03-demos/01-frontend/07-angularjs.md +++ b/docz/docs/03-demos/01-frontend/07-angularjs.md @@ -17,7 +17,7 @@ This demo is for the legacy AngularJS framework (version 1). ::: -AngularJS is a JS library for building user interfaces. +[AngularJS](https://angularjs.org/) is a JS library for building user interfaces. ## Demo diff --git a/docz/docs/03-demos/02-grid/17-gdg.md b/docz/docs/03-demos/02-grid/14-gdg.md similarity index 100% rename from docz/docs/03-demos/02-grid/17-gdg.md rename to docz/docs/03-demos/02-grid/14-gdg.md diff --git a/docz/docs/03-demos/03-net/02-server.md b/docz/docs/03-demos/03-net/02-server.md index 34a8df8..f8d0134 100644 --- a/docz/docs/03-demos/03-net/02-server.md +++ b/docz/docs/03-demos/03-net/02-server.md @@ -542,7 +542,7 @@ This will generate `SheetJSPool.xlsx`. ## Deno -:::caution +:::caution pass Many hosted services like Deno Deploy do not offer filesystem access. @@ -550,8 +550,8 @@ This breaks web frameworks that use the filesystem in body parsing. ::: -Deno provides the basic elements to implement a server. It does not provide a -body parser out of the box. +Deno provides the basic elements to implement a web server. It does not provide +a body parser out of the box. #### Drash @@ -561,13 +561,18 @@ which could handle file uploads on hosted services like Deno Deploy. _Reading Data_ `Request#bodyParam` reads body parameters. For uploaded files, the `content` -property is a `Uint8Array`: +property is a `Uint8Array` which can be parsed with the SheetJS `read` method[^1]. + +This example server responds to POST requests. The server will look for a file +in the request body under the `"upload"` key. If a file is present, the server +will parse the file, generate an HTML table using the `sheet_to_html` method[^2] +and respond with the HTML code: <CodeBlock language="ts">{`\ // @deno-types="https://cdn.sheetjs.com/xlsx-${current}/package/types/index.d.ts" import { read, utils } from 'https://cdn.sheetjs.com/xlsx-${current}/package/xlsx.mjs'; \n\ -import * as Drash from "https://deno.land/x/drash@v2.5.4/mod.ts"; +import * as Drash from "https://cdn.jsdelivr.net/gh/drashland/drash@v2.8.0/mod.ts"; \n\ class ParseResource extends Drash.Resource { public paths = ["/"]; @@ -579,7 +584,7 @@ class ParseResource extends Drash.Resource { if (!file) throw new Error("File is required!"); // highlight-next-line var wb = read(file.content); - return response.html( utils.sheet_to_html(wb.Sheets[wb.SheetNames[0]])); + return response.html(utils.sheet_to_html(wb.Sheets[wb.SheetNames[0]])); } }`} </CodeBlock> @@ -587,13 +592,22 @@ class ParseResource extends Drash.Resource { _Writing Data_ Headers are manually set with `Response#headers.set` while the raw body is set -with `Response#send`: +with `Response#send`. The raw body can be `Uint8Array` or `ArrayBuffer` objects. + +Given a SheetJS workbook object, the `write` method using `type: "buffer"`[^3] +generates data objects compatible with Drash. + +This example server responds to GET requests. The server will generate a SheetJS +worksheet object from an array of arrays[^4], build up a new workbook using the +`book_new`[^5] and `book_append_sheet`[^6] utility methods, generate a XLSX file +using `write`, and send the file with appropriate headers to initiate a download +with file name `"SheetJSDrash.xlsx"`: <CodeBlock language="ts">{`\ // @deno-types="https://cdn.sheetjs.com/xlsx-${current}/package/types/index.d.ts" import { utils, write } from 'https://cdn.sheetjs.com/xlsx-${current}/package/xlsx.mjs'; \n\ -import * as Drash from "https://deno.land/x/drash@v2.5.4/mod.ts"; +import * as Drash from "https://cdn.jsdelivr.net/gh/drashland/drash@v2.8.0/mod.ts"; \n\ class WriteResource extends Drash.Resource { public paths = ["/export"]; @@ -617,6 +631,12 @@ class WriteResource extends Drash.Resource { <details><summary><b>Complete Example</b> (click to show)</summary> +:::note + +This demo was last tested on 2023 August 18 against Drash 2.8.0 and Deno 1.36.1. + +::: + 1) Download [`SheetJSDrash.ts`](pathname:///server/SheetJSDrash.ts): ```bash @@ -642,3 +662,10 @@ The page should show the contents of the file as an HTML table. The page should attempt to download `SheetJSDrash.xlsx` . Open the new file. </details> + +[^1]: See [`read` in "Reading Files"](/docs/api/parse-options) +[^2]: See [`sheet_to_html` in "Utilities"](/docs/api/utilities/html#html-table-output) +[^3]: See [`write` in "Writing Files"](/docs/api/write-options) +[^4]: See [`aoa_to_sheet` in "Utilities"](/docs/api/utilities/array#array-of-arrays-input) +[^5]: See [`book_new` in "Utilities"](/docs/api/utilities/wb) +[^6]: See [`book_append_sheet` in "Utilities"](/docs/api/utilities/wb) diff --git a/docz/docs/03-demos/04-static/11-svelte.md b/docz/docs/03-demos/04-static/11-svelte.md index 75417b7..d9a5690 100644 --- a/docz/docs/03-demos/04-static/11-svelte.md +++ b/docz/docs/03-demos/04-static/11-svelte.md @@ -1,13 +1,11 @@ --- -title: SvelteKit +title: Supercharge SvelteKit Apps with Spreadsheets sidebar_label: SvelteKit description: Make static websites from spreadsheets using SvelteKit. Seamlessly integrate data into your website using SheetJS. Rapidly develop web apps powered by data in Excel. pagination_prev: demos/net/index pagination_next: demos/mobile/index --- -# Supercharge SvelteKit Apps with Spreadsheets - import current from '/version.js'; import CodeBlock from '@theme/CodeBlock'; @@ -96,14 +94,8 @@ each file extension supported in the loader: ```ts title="src/app.d.ts" declare global { - declare module '*.numbers' { - const data: string; - export default data; - } - declare module '*.xlsx' { - const data: string; - export default data; - } + declare module '*.numbers' { const data: string; export default data; } + declare module '*.xlsx' { const data: string; export default data; } } ``` @@ -253,7 +245,7 @@ npm i --save @sveltejs/adapter-static 13) Edit `svelte.config.js` to use the new adapter: -```diff title="svelte.config.js" +```diff title="svelte.config.js (diff)" -import adapter from '@sveltejs/adapter-auto'; +import adapter from '@sveltejs/adapter-static'; ``` diff --git a/docz/docs/03-demos/04-static/12-astro.md b/docz/docs/03-demos/04-static/12-astro.md index 19cef5a..e82aea1 100644 --- a/docz/docs/03-demos/04-static/12-astro.md +++ b/docz/docs/03-demos/04-static/12-astro.md @@ -97,22 +97,10 @@ This data loader returns Base64 strings: ```ts title="src/env.d.ts" /// <reference types="astro/client" /> -declare module '*.numbers' { - const data: string; - export default data; -} -declare module '*.xlsx' { - const data: string; - export default data; -} -declare module '*.xls' { - const data: string; - export default data; -} -declare module '*.xlsb' { - const data: string; - export default data; -} +declare module '*.numbers' { const data: string; export default data; } +declare module '*.xlsx' { const data: string; export default data; } +declare module '*.xls' { const data: string; export default data; } +declare module '*.xlsb' { const data: string; export default data; } // ... (more spreadsheet formats) ... ``` @@ -226,14 +214,8 @@ npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`} ```ts title="src/env.d.ts" /* add to the end of the file */ -declare module '*.numbers' { - const data: string; - export default data; -} -declare module '*.xlsx' { - const data: string; - export default data; -} +declare module '*.numbers' { const data: string; export default data; } +declare module '*.xlsx' { const data: string; export default data; } ``` 5) Add the highlighted lines to `astro.config.mjs`: diff --git a/docz/docs/03-demos/05-mobile/01-reactnative.md b/docz/docs/03-demos/05-mobile/01-reactnative.md index 68eb6f4..886fb03 100644 --- a/docz/docs/03-demos/05-mobile/01-reactnative.md +++ b/docz/docs/03-demos/05-mobile/01-reactnative.md @@ -441,7 +441,7 @@ const res = await readFile(path, 'ascii'); const wb = XLSX.read(new Uint8Array(res), {type:'buffer'}); ``` -:::caution +:::caution pass On iOS, the URI from `react-native-document-picker` must be massaged: @@ -546,7 +546,7 @@ await writeFile(DocumentDirectoryPath + "/sheetjs.xlsx", bstr, "ascii"); #### `expo-file-system` -:::caution +:::caution pass Some Expo APIs return URI that cannot be read with `expo-file-system`. This will manifest as an error: @@ -601,7 +601,7 @@ The Android simulator runs Android 12 (S) Platform 31 on a Pixel 5. ::: -:::warning +:::warning pass There are many moving parts and pitfalls with React Native apps. It is strongly recommended to follow the official React Native tutorials for iOS and Android @@ -811,7 +811,7 @@ const make_width = ws => { </TabItem> <TabItem value="EXPO" label="EXPO"> -:::warning +:::warning pass At the time of testing, Expo Modules were incompatible with Android projects. diff --git a/docz/docs/03-demos/05-mobile/06-flutter.md b/docz/docs/03-demos/05-mobile/06-flutter.md index 4cf1b31..13c8e7c 100644 --- a/docz/docs/03-demos/05-mobile/06-flutter.md +++ b/docz/docs/03-demos/05-mobile/06-flutter.md @@ -1,8 +1,10 @@ --- -title: Flutter +title: Let Data Fly with Flutter +sidebar_label: Dart + Flutter +description: Build data-intensive mobile apps with Dart + Flutter. Seamlessly integrate spreadsheets into your app using SheetJS. Securely process and generate Excel files on the go. pagination_prev: demos/static/index pagination_next: demos/desktop/index -sidebar_position: 5 +sidebar_position: 6 sidebar_custom_props: summary: Dart + JS Interop --- @@ -10,22 +12,29 @@ sidebar_custom_props: import current from '/version.js'; import CodeBlock from '@theme/CodeBlock'; -Dart + Flutter is a cross-platform alternative to [JS + React Native](/docs/demos/mobile/reactnative). +Dart[^1] + Flutter[^2] is a popular cross-platform app framework. JavaScript +code can be run through [embedded engines](/docs/demos/engines). -For the iOS and Android targets, the `flutter_js` package wraps JavaScriptCore -and QuickJS engines respectively. +[SheetJS](https://sheetjs.com) is a JavaScript library for reading and writing +data from spreadsheets. -The [Standalone scripts](/docs/getting-started/installation/standalone) can be -parsed and evaluated in the wrapped engines. +This demo uses Dart + Flutter and SheetJS to process spreadsheets. We'll explore +how to use the `flutter_js` package to run JavaScript code and how to pass data +between Dart code and the platform-specific JS engines. -The "Complete Example" creates an app that looks like the screenshots below: +The "Demo" creates an app that looks like the screenshots below: <table><thead><tr> <th><a href="#demo">iOS</a></th> + <th><a href="#demo">Android</a></th> </tr></thead><tbody><tr><td>  +</td><td> + + + </td></tr></tbody></table> :::warning Telemetry @@ -43,8 +52,18 @@ flutter config --disable-telemetry ## Integration Details +:::note pass + This demo assumes familiarity with Dart and Flutter. +::: + +For the iOS and Android targets, the `flutter_js` package[^3] wraps JavaScriptCore[^4] +and QuickJS[^5] engines respectively. + +The [SheetJS Standalone scripts](/docs/getting-started/installation/standalone) +can be parsed and evaluated in the wrapped engines. + ### Loading SheetJS #### Adding the scripts @@ -95,6 +114,7 @@ Since fetching assets is asynchronous, it is recommended to create a wrapper ```dart class SheetJSFlutterState extends State<SheetJSFlutter> { String _version = '0.0.0'; + late JavascriptRuntime _engine; @override void initState() { _engine = getJavascriptRuntime(); @@ -119,22 +139,47 @@ class SheetJSFlutterState extends State<SheetJSFlutter> { ### Reading data +The following diagram depicts the workbook waltz: + +```mermaid +flowchart LR + file[(file data\nUint8List)] + subgraph SheetJS operations + base64(Base64\nstring) + wb((SheetJS\nWorkbook)) + csv(CSV\nstring) + end + lld(List of\nLists) + tbl{{Data\nTable}} + file --> |`base64Encode`\nDart| base64 + base64 --> |`XLSX.read`\nParse Bytes| wb + wb --> |`sheet_to_csv`\nExtract Data| csv + csv --> |`CsvToListConverter`\nDart| lld + lld --> |`Table`\nFlutter| tbl +``` + The most common binary data type in Dart is `Uint8List`. It is the data type for `http.Response#bodyBytes` and the return type of `File#readAsBytes()`. The Flutter JS connector offers no simple interop for `Uint8List` data. The data -should be converted to Base64 before parsing. +should be converted to Base64 using `base64Encode` before parsing. + +Once passed into the JS engine, the SheetJS `read` function[^6] can read the +Base64-encoded string and the `sheet_to_csv` utility function[^7] can generate +a CSV string from a worksheet. This string can be pulled back into Dart code. The `csv` package provides a special `CsvToListConverter` converter to generate -`List<List<dynamic>>` (Dart's spiritual equivalent of the array of arrays): +`List<List<dynamic>>` (Dart's spiritual equivalent of the array of arrays). + +The following snippet generates `List<List<dynamic>>` from a Dart `Uint8List`: ```dart import 'dart:convert'; -import 'package:http/http.dart' as http; import 'package:csv/csv.dart'; class SheetJSFlutterState extends State<SheetJSFlutter> { List<List<dynamic>> _data = []; + late JavascriptRuntime _engine; void _processBytes(Uint8List bytes) { String base64 = base64Encode(bytes); @@ -145,19 +190,76 @@ class SheetJSFlutterState extends State<SheetJSFlutter> { String csv = func.stringResult; setState(() { _data = CsvToListConverter(eol: "\n").convert(csv); }); } +} ``` ## Demo :::note -This demo was tested on an Intel Mac on 2023 May 31 with Flutter 3.10.2, -Dart 3.0.2, and `flutter_js` 0.7.0 +This demo was tested on an Intel Mac on 2023-08-18 with Flutter 3.13.0, Dart +3.1.0, and `flutter_js` 0.8.0. The iOS simulator runs iOS 16.2 on an iPhone 14 Pro Max. +The Android simulator runs Android 12.0 (S) API 31 on a Pixel 3. + ::: +0) Follow the official "Install" instructions for Flutter[^8]. + +Run `flutter doctor` and confirm the following items are checked: + +``` +[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0) +[✓] Xcode - develop for iOS and macOS (Xcode 14.2) +[✓] Android Studio (version 2022.1) +``` + +(the actual version numbers may differ) + +<details open><summary><b>Installation Notes</b> (click to hide)</summary> + +:::caution pass + +In local testing, there were issues with the Android toolchain: + +``` +error: Android sdkmanager not found. Update to the latest Android SDK and ensure that the cmdline-tools are installed to resolve this. +``` + +This was fixed by switching to Java 20, installing `Android SDK 33`, and rolling +back to `Android SDK Command-Line Tools (revision: 10.0)` + +::: + +:::caution pass + +If Google Chrome is not installed, `flutter doctor` will show an issue: + +``` +[✗] Chrome - develop for the web (Cannot find Chrome executable at + /Applications/Google Chrome.app/Contents/MacOS/Google Chrome) + ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable. +``` + +If Chromium is installed, the environment variable should be manually assigned: + +```bash +export CHROME_EXECUTABLE=/Applications/Chromium.app/Contents/MacOS/Chromium +``` + +::: + +</details> + +Run `flutter emulators` and check for both `ios` and `android` emulators: + +``` +apple_ios_simulator • iOS Simulator • Apple • ios +Pixel_3_API_31 • Pixel 3 API 31 • Google • android +``` + 1) Disable telemetry. ```bash @@ -167,6 +269,8 @@ flutter config --no-analytics flutter config --disable-telemetry ``` +### Base Project + 2) Create a new Flutter project: ```bash @@ -174,7 +278,7 @@ flutter create sheetjs_flutter cd sheetjs_flutter ``` -3) Open the iOS simulator +3) Open the iOS simulator. 4) While the iOS simulator is open, start the application: @@ -182,7 +286,7 @@ cd sheetjs_flutter flutter run ``` -Once the app loads in the simulator, stop the terminal process. +Once the app loads, stop the terminal process and close the simulator. 5) Install Flutter / Dart dependencies: @@ -219,7 +323,11 @@ cd ..`} curl -L -o lib/main.dart https://docs.sheetjs.com/flutter/main.dart ``` -9) Launch the app: +### iOS + +9) Start the iOS simulator again. + +10) Launch the app: ```bash flutter run @@ -227,3 +335,70 @@ flutter run 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. + +11) Close the iOS simulator. + +### Android + +12) Start the Android emulator with `emulator -avd name_of_device`. The actual +emulator name can be found with `flutter emulators`: + +``` +% flutter emulators +2 available emulators: + +apple_ios_simulator • iOS Simulator • Apple • ios +Pixel_3_API_31 • Pixel 3 API 31 • Google • android +^^^^^^^^^^^^^^--- the first column is the name + +% emulator -avd Pixel_3_API_31 +``` + +13) Launch the app: + +```bash +flutter run +``` + +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 + +When the demo was last run, there was a build error: + +``` +│ The plugin flutter_js requires a higher Android SDK version. │ +│ Fix this issue by adding the following to the file /.../android/app/build.gradle: │ +│ android { │ +│ defaultConfig { │ +│ minSdkVersion 21 │ +│ } │ +│ } │ +``` + +This was fixed by editing `android/app/build.gradle`. + +Searching for `minSdkVersion` should reveal the following line: + +```text title="android\app\build.gradle" + minSdkVersion flutter.minSdkVersion +``` + +`flutter.minSdkVersion` should be replaced with `21`: + +```diff title="android\app\build.gradle (diff)" +- minSdkVersion flutter.minSdkVersion ++ minSdkVersion 21 +``` + +::: + +[^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. +[^6]: See [`read` in "Reading Files"](/docs/api/parse-options) +[^7]: See [`sheet_to_csv` in "CSV and Text"](/docs/api/utilities/csv#delimiter-separated-output) +[^8]: See [the Flutter Installation Instructions](https://docs.flutter.dev/get-started/install) diff --git a/docz/docs/03-demos/06-desktop/09-cli.md b/docz/docs/03-demos/06-desktop/09-cli.md index 924a9f1..fb0ede9 100644 --- a/docz/docs/03-demos/06-desktop/09-cli.md +++ b/docz/docs/03-demos/06-desktop/09-cli.md @@ -44,7 +44,7 @@ This demo was tested in the following deployments: |:-------------|:--------|:------------|:-----------| | `darwin-x64` | `5.8.1` | `18.5.0` | 2023-05-08 | | `darwin-arm` | `5.8.1` | `18.5.0` | 2023-06-05 | -| `win32-x64` | `5.8.1` | `18.5.0` | 2023-05-08 | +| `win10-x64` | `5.8.1` | `18.5.0` | 2023-05-08 | | `linux-x64` | `5.8.1` | `18.5.0` | 2023-05-08 | **`nexe`** @@ -53,7 +53,7 @@ This demo was tested in the following deployments: |:-------------|:-------------|:------------|:-----------| | `darwin-x64` | `4.0.0-rc.2` | `14.15.3` | 2023-05-08 | | `darwin-arm` | `4.0.0-rc.2` | `18.16.0` | 2023-06-05 | -| `win32-x64` | `4.0.0-rc.2` | `14.15.3` | 2023-05-08 | +| `win10-x64` | `4.0.0-rc.2` | `14.15.3` | 2023-05-08 | | `linux-x64` | `4.0.0-rc.2` | `14.15.3` | 2023-05-08 | **`boxednode`** @@ -166,7 +166,7 @@ This demo was last tested in the following deployments: | `darwin-x64` | `11.4.183.2` | 2023-05-22 | | `darwin-mac` | `11.4.183.2` | 2023-05-22 | | `linux-x64` | `11.4.183.2` | 2023-05-23 | -| `win32-x64` | `11.4.183.2` | 2023-05-23 | +| `win10-x64` | `11.4.183.2` | 2023-05-23 | </details> @@ -253,7 +253,7 @@ This demo was last tested in the following deployments: |:-------------|:---------|:-----------| | `darwin-x64` | `1.33.2` | 2023-05-08 | | `darwin-arm` | `1.34.1` | 2023-06-05 | -| `win32-x64` | `1.33.2` | 2023-05-08 | +| `win10-x64` | `1.33.2` | 2023-05-08 | | `linux-x64` | `1.33.2` | 2023-05-08 | </details> diff --git a/docz/docs/03-demos/09-cloud/19-deno.md b/docz/docs/03-demos/09-cloud/19-deno.md index 43d1e6d..565a4bc 100644 --- a/docz/docs/03-demos/09-cloud/19-deno.md +++ b/docz/docs/03-demos/09-cloud/19-deno.md @@ -41,7 +41,7 @@ The following example assumes the file is submitted at field name `file`: <CodeBlock language="ts">{`\ // @deno-types="https://cdn.sheetjs.com/xlsx-${current}/package/types/index.d.ts" import { read, utils } from 'https://cdn.sheetjs.com/xlsx-${current}/package/xlsx.mjs'; -import * as Drash from "https://deno.land/x/drash@v2.5.4/mod.ts"; +import * as Drash from "https://cdn.jsdelivr.net/gh/drashland/drash@v2.8.0/mod.ts"; \n\ class SheetJSResource extends Drash.Resource { public paths = ["/"]; diff --git a/docz/docs/03-demos/12-engines/02_v8.md b/docz/docs/03-demos/12-engines/02_v8.md index b1efb75..81b955d 100644 --- a/docz/docs/03-demos/12-engines/02_v8.md +++ b/docz/docs/03-demos/12-engines/02_v8.md @@ -362,7 +362,7 @@ This demo was last tested in the following deployments: | `darwin-x64` | `0.71.2` | 2023-05-22 | | `darwin-arm` | `0.73.0` | 2023-06-05 | | `linux-x64` | `0.71.2` | 2023-05-23 | -| `win32-x64` | `0.71.2` | 2023-05-23 | +| `win10-x64` | `0.71.2` | 2023-05-23 | ::: diff --git a/docz/docs/06-solutions/01-input.md b/docz/docs/06-solutions/01-input.md index 1a4075d..609a700 100644 --- a/docz/docs/06-solutions/01-input.md +++ b/docz/docs/06-solutions/01-input.md @@ -344,7 +344,7 @@ import * as XLSX from 'https://cdn.sheetjs.com/xlsx-${current}/package/xlsx.mjs' import * as cptable from 'https://cdn.sheetjs.com/xlsx-${current}/package/dist/cpexcel.full.mjs'; XLSX.set_cptable(cptable); \n\ -import * as Drash from "https://deno.land/x/drash@v2.5.4/mod.ts"; +import * as Drash from "https://cdn.jsdelivr.net/gh/drashland/drash@v2.8.0/mod.ts"; \n\ class SheetResource extends Drash.Resource { public paths = ["/"]; diff --git a/docz/docs/07-csf/02-cell.md b/docz/docs/07-csf/02-cell.md index 39ad55f..08f61d9 100644 --- a/docz/docs/07-csf/02-cell.md +++ b/docz/docs/07-csf/02-cell.md @@ -1,16 +1,15 @@ --- +title: Cell Objects sidebar_position: 2 --- -# Cell Object - Cell objects are plain JS objects with keys and values following the convention: | Key | Description | | --- | ---------------------------------------------------------------------- | | | **Core Cell Properties** ([More Info](#data-types)) | -| `v` | raw value (number, string, Date object, boolean) | | `t` | type: `b` Boolean, `e` Error, `n` Number, `d` Date, `s` Text, `z` Stub | +| `v` | raw value (number, string, Date object, boolean) | | | **Number Formats** ([More Info](/docs/csf/features/nf)) | | `z` | number format string associated with the cell (if requested) | | `w` | formatted text (if applicable) | @@ -25,9 +24,11 @@ Cell objects are plain JS objects with keys and values following the convention: | `h` | HTML rendering of the rich text (if applicable) | | `s` | the style/theme of the cell (if applicable) | -Built-in export utilities (such as the CSV exporter) will use the `w` text if it -is available. To change a value, be sure to delete `cell.w` (or set it to -`undefined`) before attempting to export. The utilities will regenerate the `w` +Cell objects are expected to have a type (`t` property). + +Built-in utilities that use formatted text (such as the CSV exporter) will use +the `w` text if available. When programmatically changing values, the `w` text +should be deleted before attempting to export. Utilities will regenerate the `w` text from the number format (`cell.z`) and the raw value if possible. The actual array formula is stored in the `f` field of the first cell in the diff --git a/docz/docs/07-csf/07-features/07-vba.md b/docz/docs/07-csf/07-features/07-vba.md index 44cb1be..543f14d 100644 --- a/docz/docs/07-csf/07-features/07-vba.md +++ b/docz/docs/07-csf/07-features/07-vba.md @@ -33,7 +33,7 @@ supported in `XLSM`, `XLSB`, and `BIFF8 XLS` formats. The supported format writers automatically insert the data blobs if it is present in the workbook and associate with the worksheet names. -:::note +:::note pass The `vbaraw` property stores raw bytes. [SheetJS Pro](https://sheetjs.com/pro) offers a special component for extracting macro text from the VBA blob, editing @@ -217,7 +217,7 @@ To ensure the writers export the VBA blob: - The `write` or `writeFile` call must include the option `bookVBA: true` This example uses [`vbaProject.bin`](pathname:///vba/vbaProject.bin) from the -[sample file](pathname:///vba/vbaProject.bin): +[sample file](pathname:///vba/SheetJSVBAFormula.xlsm): ```jsx live function SheetJSVBAPrepared() { return ( <button onClick={async () => { diff --git a/docz/static/deno/s2c.ts b/docz/static/deno/s2c.ts index b2f3479..c22ed06 100644 --- a/docz/static/deno/s2c.ts +++ b/docz/static/deno/s2c.ts @@ -3,7 +3,7 @@ import { read, utils, set_cptable, version } from 'https://cdn.sheetjs.com/xlsx- import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.20.0/package/dist/cpexcel.full.mjs'; set_cptable(cptable); -import * as Drash from "https://deno.land/x/drash@v2.5.4/mod.ts"; +import * as Drash from "https://cdn.jsdelivr.net/gh/drashland/drash@v2.8.0/mod.ts"; class SheetJSResource extends Drash.Resource { public paths = ["/"]; @@ -23,7 +23,7 @@ class SheetJSResource extends Drash.Resource { try { response.headers.set("access-control-allow-origin", "*"); } catch(e) {} if (!file) throw new Error("File is required!"); var wb = read(file.content, {type: "buffer", dense: true}); - return response.html( (type == "csv" ? utils.sheet_to_csv : utils.sheet_to_html)(wb.Sheets[wb.SheetNames[0]])); + return response.html((type == "csv" ? utils.sheet_to_csv : utils.sheet_to_html)(wb.Sheets[wb.SheetNames[0]])); } public GET(request: Drash.Request, response: Drash.Response): void { diff --git a/docz/static/flutter/and.png b/docz/static/flutter/and.png new file mode 100644 index 0000000000000000000000000000000000000000..9cd3a28e91538cddda98e86bbd100499f0afc641 GIT binary patch literal 70898 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 literal 0 HcmV?d00001 diff --git a/docz/static/server/SheetJSDrash.ts b/docz/static/server/SheetJSDrash.ts index 4ec4173..dfc4f3d 100644 --- a/docz/static/server/SheetJSDrash.ts +++ b/docz/static/server/SheetJSDrash.ts @@ -4,7 +4,7 @@ import { read, utils, write, set_cptable } from 'https://cdn.sheetjs.com/xlsx-la import * as cptable from 'https://cdn.sheetjs.com/xlsx-latest/package/dist/cpexcel.full.mjs'; set_cptable(cptable); -import * as Drash from "https://deno.land/x/drash@v2.5.4/mod.ts"; +import * as Drash from "https://cdn.jsdelivr.net/gh/drashland/drash@v2.8.0/mod.ts"; class ParseResource extends Drash.Resource { public paths = ["/"]; @@ -13,7 +13,7 @@ class ParseResource extends Drash.Resource { const file = request.bodyParam<Drash.Types.BodyFile>("file"); if (!file) throw new Error("File is required!"); var wb = read(file.content); - return response.html( utils.sheet_to_html(wb.Sheets[wb.SheetNames[0]])); + return response.html(utils.sheet_to_html(wb.Sheets[wb.SheetNames[0]])); } public GET(request: Drash.Request, response: Drash.Response): void {