6.3 KiB
| title | pagination_prev | pagination_next | sidebar_custom_props | ||
|---|---|---|---|---|---|
| Command-Line Tools | demos/mobile/index | demos/data/index |
|
import current from '/version.js'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock';
With the availability of JS engines and the success of server-side platforms, it is feasible to build command-line tools for various workflows.
This demo covers a number of strategies for building standalone processors. The goal is to generate CSV output from an arbitrary spreadsheet file.
V8
The V8 demo covers standalone programs that embed the V8 engine. This demo uses the Rust integration to generate a command line tool.
Tested Deployments (click to show)
This demo was last tested in the following deployments:
| Architecture | V8 Version | Date |
|---|---|---|
darwin-x64 |
11.4.183.2 |
2023-05-22 |
- Make a new folder for the project:
mkdir sheetjs2csv
cd sheetjs2csv
- Download the following scripts:
curl -LO https://docs.sheetjs.com/cli/Cargo.toml
curl -LO https://docs.sheetjs.com/cli/snapshot.rs
curl -LO https://docs.sheetjs.com/cli/sheet2csv.rs
- Download the standalone build:
{\ curl -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js}
- Build the V8 snapshot:
cargo build --bin snapshot
cargo run --bin snapshot
- Build
sheet2csv:
cargo build --release --bin sheet2csv
mv target/release/sheet2csv .
- Download the test file https://sheetjs.com/pres.numbers:
curl -LO https://sheetjs.com/pres.numbers
Test by running ./sheet2csv pres.numbers
NodeJS
There are a few popular tools for compiling NodeJS scripts to CLI programs.
The demo script presents a friendly command line interface including flags:
$ ./xlsx-cli -h
Usage: xlsx-cli [options] <file> [sheetname]
Options:
-V, --version output the version number
-f, --file <file> use specified workbook
-s, --sheet <sheet> print specified sheet (default first sheet)
...
Tested Deployments (click to show)
This demo was tested in the following deployments:
pkg
| Architecture | Version | Node Target | Date |
|---|---|---|---|
darwin-x64 |
5.8.1 |
18.5.0 |
2023-05-08 |
win32-x64 |
5.8.1 |
18.5.0 |
2023-05-08 |
linux-x64 |
5.8.1 |
18.5.0 |
2023-05-08 |
nexe
| Architecture | Version | Node Target | Date |
|---|---|---|---|
darwin-x64 |
4.0.0-rc.2 |
14.15.3 |
2023-05-08 |
win32-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
| Architecture | Version | Node Target | Date |
|---|---|---|---|
darwin-x64 |
2.0.1 |
20.1.0 |
2023-05-08 |
linux-x64 |
2.0.1 |
20.1.0 |
2023-05-08 |
- Download the test file https://sheetjs.com/pres.numbers:
curl -LO https://sheetjs.com/pres.numbers
- Download
xlsx-cli.js
curl -LO https://docs.sheetjs.com/cli/xlsx-cli.js
- Install the dependencies:
- Follow tooling steps:
Run nexe and manually specify NodeJS version 14.15.3
npx nexe -t 14.15.3 xlsx-cli.js
This generates xlsx-cli or xlsx-cli.exe depending on platform.
Run pkg:
npx pkg xlsx-cli.js
This generates xlsx-cli-linux, xlsx-cli-macos, and xlsx-cli-win.exe .
Run boxednode:
npx boxednode@2.0.1 -s xlsx-cli.js -t xlsx-cli
- Run the generated program, passing
pres.numbersas the argument. For example, on an Intel Mac,nexegeneratesxlsx-cliso the command is:
./xlsx-cli pres.numbers
Deno
deno compile generates a standalone executable that includes the entire JS
runtime as well as user JS code.
When compiling, the --allow-read option must be specified to allow the script
to read files from the filesystem with Deno.readFileSync.
https://docs.sheetjs.com/cli/sheet2csv.ts can be compiled and run from Deno.
Tested Deployments (click to show)
This demo was last tested in the following deployments:
| Architecture | Version | Date |
|---|---|---|
darwin-x64 |
1.33.2 |
2023-05-08 |
win32-x64 |
1.33.2 |
2023-05-08 |
linux-x64 |
1.33.2 |
2023-05-08 |
- Download the test file https://sheetjs.com/pres.numbers:
curl -LO https://sheetjs.com/pres.numbers
- Test the script with
deno run:
deno run -r --allow-read https://docs.sheetjs.com/cli/sheet2csv.ts pres.numbers
If this worked, the program will print a CSV of the first worksheet.
- Compile and run
sheet2csv:
deno compile -r --allow-read https://docs.sheetjs.com/cli/sheet2csv.ts
./sheet2csv pres.numbers
Dedicated Engines
The following demos for JS engines produce standalone programs: