jint
This commit is contained in:
parent
90300cd6b7
commit
4438bd86cd
@ -64,7 +64,8 @@ but the registry is out of date. The latest version on that registry is 0.18.5
|
||||
|
||||
This is a known registry bug
|
||||
|
||||
<https://cdn.sheetjs.com/> is the authoritative source for SheetJS scripts.
|
||||
**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:
|
||||
|
||||
|
@ -56,7 +56,8 @@ but the registry is out of date. The latest version on that registry is 0.18.5
|
||||
|
||||
This is a known registry bug
|
||||
|
||||
<https://cdn.sheetjs.com/> is the authoritative source for SheetJS scripts.
|
||||
**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:
|
||||
|
||||
|
@ -72,7 +72,8 @@ and the types URLs should be updated at the same time:
|
||||
|
||||
The official Deno registry is out of date. This is a registry bug.
|
||||
|
||||
<https://cdn.sheetjs.com/> is the authoritative source for SheetJS scripts.
|
||||
**The SheetJS CDN** <https://cdn.sheetjs.com/> **is the authoritative source**
|
||||
**for SheetJS modules.**
|
||||
|
||||
:::
|
||||
|
||||
|
@ -3,24 +3,17 @@ pagination_prev: getting-started/index
|
||||
pagination_next: getting-started/examples/index
|
||||
sidebar_position: 7
|
||||
sidebar_custom_props:
|
||||
summary: Download and Import ECMAScript Modules
|
||||
summary: Load NodeJS-style modules using CommonJS or ESM
|
||||
---
|
||||
|
||||
import current from '/version.js';
|
||||
import CodeBlock from '@theme/CodeBlock';
|
||||
|
||||
# Bun
|
||||
|
||||
Module scripts are available at <https://cdn.sheetjs.com/>.
|
||||
Tarballs are available on <https://cdn.sheetjs.com>.
|
||||
|
||||
<p><a href={`https://cdn.sheetjs.com/xlsx-${current}/package/xlsx.mjs`}>https://cdn.sheetjs.com/xlsx-{current}/package/xlsx.mjs</a> is the URL for {current}</p>
|
||||
|
||||
After downloading the script, it can be directly imported:
|
||||
|
||||
```js
|
||||
import * as XLSX from './xlsx.mjs';
|
||||
import * as fs from 'fs';
|
||||
XLSX.set_fs(fs);
|
||||
```
|
||||
<p><a href={`https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`}>https://cdn.sheetjs.com/xlsx-{current}/xlsx-{current}.tgz</a> is the URL for version {current}</p>
|
||||
|
||||
:::caution Bun support is considered experimental.
|
||||
|
||||
@ -29,6 +22,14 @@ be reported to the Bun project for further diagnosis.
|
||||
|
||||
:::
|
||||
|
||||
## Installation
|
||||
|
||||
Tarballs can be directly installed with `bun install`[^1]:
|
||||
|
||||
<CodeBlock language="bash">{`\
|
||||
bun install https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`}
|
||||
</CodeBlock>
|
||||
|
||||
:::tip pass
|
||||
|
||||
[Watch the repo](https://git.sheetjs.com/SheetJS/sheetjs) or subscribe to the
|
||||
@ -37,15 +38,52 @@ new versions are released!
|
||||
|
||||
:::
|
||||
|
||||
## Encoding support
|
||||
:::warning pass
|
||||
|
||||
If Encoding support is required, `cpexcel.full.mjs` must be manually imported.
|
||||
At the time of writing `bun install` does not support vendored tarballs[^2].
|
||||
|
||||
<p><a href={`https://cdn.sheetjs.com/xlsx-${current}/package/dist/cpexcel.full.mjs`}>https://cdn.sheetjs.com/xlsx-{current}/package/dist/cpexcel.full.mjs</a> is the URL for {current}</p>
|
||||
:::
|
||||
|
||||
## Usage
|
||||
|
||||
```ts
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import * as cptable from './cpexcel.full.mjs';
|
||||
XLSX.set_cptable(cptable);
|
||||
Bun supports both "CommonJS" and "ESM" modules.
|
||||
|
||||
:::info pass
|
||||
|
||||
It is strongly recommended to use CommonJS in Bun.
|
||||
|
||||
:::
|
||||
|
||||
#### CommonJS `require`
|
||||
|
||||
By default, the module supports `require` and it will automatically add support
|
||||
for streams and file system access:
|
||||
|
||||
```js
|
||||
const { readFile } = require("xlsx");
|
||||
const wb = readFile("pres.numbers"); // works!
|
||||
```
|
||||
|
||||
#### ESM `import`
|
||||
|
||||
When importing the library using ESM `import` statements, the native NodeJS
|
||||
modules are not loaded. They must be added manually:
|
||||
|
||||
```js
|
||||
import * as XLSX from 'xlsx';
|
||||
|
||||
/* load 'fs' for readFile and writeFile support */
|
||||
import * as fs from 'fs';
|
||||
XLSX.set_fs(fs);
|
||||
|
||||
/* load 'stream' for stream support */
|
||||
import { Readable } from 'stream';
|
||||
XLSX.stream.set_readable(Readable);
|
||||
|
||||
/* load the codepage support library for extended support with older formats */
|
||||
import * as cpexcel from 'xlsx/dist/cpexcel.full.mjs';
|
||||
XLSX.set_cptable(cpexcel);
|
||||
```
|
||||
|
||||
[^1]: Bun releases before the official 1.0.0 release did not support tarball dependencies. If a pre-1.0.0 release must be used, the module can be installed with a package manager like Yarn or the ESM script can be vendored.
|
||||
[^2]: See [the relevant issue in the Bun issue tracker](https://github.com/oven-sh/bun/issues/101)
|
@ -394,7 +394,7 @@ Open the generated file and verify the contents match the grid.
|
||||
should update with the data in the file.
|
||||
|
||||
[^1]: See ["Array of Objects" in the ReactJS demo](/docs/demos/frontend/react#array-of-objects)
|
||||
[^2]: The "Story" section of the ["Getting Started" page in the Glide Data Grid Storybook](https://quicktype.github.io/glide-data-grid/?path=/story/glide-data-grid-docs--getting-started) stores an Array of Objects outside of the component.
|
||||
[^2]: The "Story" section of the ["Getting Started" page in the Glide Data Grid Storybook](https://glideapps.github.io/glide-data-grid/?path=/story/glide-data-grid-docs--getting-started) stores an Array of Objects outside of the component.
|
||||
[^3]: See [the "Data" section in `DataEditorProps`](https://grid.glideapps.com/docs/interfaces/DataEditorProps.html#columns:~:text=default-,Data,-Readonly) in the Glide Data Grid API documentation.
|
||||
[^4]: See [`read` in "Reading Files"](/docs/api/parse-options)
|
||||
[^5]: See ["SheetJS Data Model"](/docs/csf)
|
||||
|
@ -29,7 +29,7 @@ remote file, parses the contents, and writes data to the sheet:
|
||||
|
||||
:::note
|
||||
|
||||
This demo was last tested on 2023 April 17.
|
||||
This demo was last tested on 2023 September 16.
|
||||
|
||||
:::
|
||||
|
||||
@ -152,12 +152,28 @@ npx @google/clasp push
|
||||
|
||||
:::caution
|
||||
|
||||
If the push command fails with an error message like
|
||||
If the Google Apps Script API is not enabled, the command will display an object
|
||||
with `code: 403` and an error message about the Apps Script API:
|
||||
|
||||
> User has not enabled the Apps Script API
|
||||
```js
|
||||
{ // ...
|
||||
code: 403,
|
||||
errors: [
|
||||
{
|
||||
message: 'User has not enabled the Apps Script API. Enable it by ...',
|
||||
domain: 'global',
|
||||
reason: 'forbidden'
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
The message includes a URL (`https://script.google.com/home/usersettings` when
|
||||
the demo was last tested). Visit that URL and enable the Google Apps Script API.
|
||||
the demo was last tested). Visit that URL.
|
||||
|
||||
If the Google Apps Script API is "Off", click on "Google Apps Script API" and
|
||||
click on the slider to enable the API.
|
||||
|
||||
After enabling the API, run `npx @google/clasp push` again.
|
||||
|
||||
:::
|
||||
@ -190,7 +206,7 @@ function SHEETJS(url) {
|
||||
}
|
||||
```
|
||||
|
||||
Click the "Save Project" icon to save the project.
|
||||
Click the "Save Project" icon (💾) to save the project.
|
||||
|
||||
11) In the Google Sheets window, select cell A1 and enter the formula
|
||||
|
||||
|
414
docz/docs/03-demos/42-engines/05-jint.md
Normal file
414
docz/docs/03-demos/42-engines/05-jint.md
Normal file
@ -0,0 +1,414 @@
|
||||
---
|
||||
title: Sheets in .NET with Jint
|
||||
sidebar_label: C# + Jint
|
||||
description: Process structured data in C#. Seamlessly integrate spreadsheets into your program by pairing Jint and SheetJS. Handle the most complex Excel files without breaking a sweat.
|
||||
pagination_prev: demos/bigdata/index
|
||||
pagination_next: solutions/input
|
||||
---
|
||||
|
||||
import current from '/version.js';
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
import CodeBlock from '@theme/CodeBlock';
|
||||
|
||||
Jint[^1] is a JavaScript interpreter for .NET Standard and .NET Core. It has
|
||||
built-in support for binary data with .NET `byte[]` and ES6 `Uint8Array`.
|
||||
|
||||
[SheetJS](https://sheetjs.com) is a JavaScript library for reading and writing
|
||||
data from spreadsheets.
|
||||
|
||||
This demo uses Jint and SheetJS to read and write spreadsheets. We'll explore
|
||||
how to load SheetJS in the Jint engine, exchange binary data with a C# program,
|
||||
and process spreadsheets and structured data.
|
||||
|
||||
The ["Integration Example"](#integration-example) section includes a complete
|
||||
command-line tool for reading arbitrary workbooks and writing data to XLSB
|
||||
(Excel 2007+ Binary Format) workbooks.
|
||||
|
||||
## Integration Details
|
||||
|
||||
:::note pass
|
||||
|
||||
Most of the integration functions are not documented. This explanation is based
|
||||
on version `3.0.0-beta-2051`.
|
||||
|
||||
:::
|
||||
|
||||
The [SheetJS Standalone scripts](/docs/getting-started/installation/standalone)
|
||||
can be parsed and evaluated in a Jint engine instance.
|
||||
|
||||
### Initialize Jint
|
||||
|
||||
A `Jint.Engine` object can be created in one line:
|
||||
|
||||
```csharp
|
||||
var engine = new Jint.Engine();
|
||||
```
|
||||
|
||||
Jint does not expose the NodeJS `global` but does provide `globalThis`. Using
|
||||
`Jint.Engine#Evaluate`, a `global` global variable can be created:
|
||||
|
||||
>The JS code is
|
||||
```js
|
||||
global = globalThis;
|
||||
```
|
||||
|
||||
```csharp
|
||||
engine.Evaluate("global = globalThis");
|
||||
```
|
||||
|
||||
### Load SheetJS Scripts
|
||||
|
||||
The main library can be loaded by reading the scripts from the file system with
|
||||
`System.IO.File.ReadAllText` and evaluating in the Jint engine instance:
|
||||
|
||||
```csharp
|
||||
/* read and evaluate the shim script */
|
||||
string src = System.IO.File.ReadAllText("shim.min.js");
|
||||
engine.Evaluate(src);
|
||||
/* read and evaluate the main library */
|
||||
engine.Evaluate(System.IO.File.ReadAllText("xlsx.full.min.js"));
|
||||
```
|
||||
|
||||
To confirm the library is loaded, `XLSX.version` can be inspected:
|
||||
|
||||
```csharp
|
||||
Console.WriteLine("SheetJS version {0}", engine.Evaluate("XLSX.version"));
|
||||
```
|
||||
|
||||
:::info pass
|
||||
|
||||
The Jint `Evaluate` method returns a generic `Jint.Native.JsValue` object.
|
||||
|
||||
When the JS expression returns a string, the `JsValue` object is an instance of
|
||||
`Jint.Native.JsString`. C# `ToString` will return the underlying `string` value.
|
||||
|
||||
:::
|
||||
|
||||
### Reading Files
|
||||
|
||||
In C#, `System.IO.File.ReadAllBytes` reads file data into a `byte[]` byte array:
|
||||
|
||||
```csharp
|
||||
string filename = "pres.xlsx";
|
||||
byte[] buf = File.ReadAllBytes(filename);
|
||||
```
|
||||
|
||||
Jint natively supports `Uint8Array` construction from the byte array:
|
||||
|
||||
```csharp
|
||||
Jint.Native.JsValue u8 = engine.Realm.Intrinsics.Uint8Array.Construct(buf);
|
||||
```
|
||||
|
||||
`Jint.Engine#SetValue` will assign the `Uint8Array` to a scope variable in JS:
|
||||
|
||||
```csharp
|
||||
engine.SetValue("buf", u8);
|
||||
```
|
||||
|
||||
The `buf` variable can be parsed from JS with the SheetJS `read` method[^2]:
|
||||
|
||||
>The JS code is
|
||||
```js
|
||||
var wb = XLSX.read(buf);
|
||||
```
|
||||
|
||||
```csharp
|
||||
engine.Evaluate("var wb = XLSX.read(buf);");
|
||||
```
|
||||
|
||||
`wb` is a SheetJS workbook object. The ["SheetJS Data Model"](/docs/csf) section
|
||||
describes the object structure and the ["API Reference"](/docs/api) section
|
||||
describes various helper functions.
|
||||
|
||||
### Writing Files
|
||||
|
||||
The SheetJS `write` method[^3] can write workbooks. The option `type: "buffer"`
|
||||
instructs the library to generate `Uint8Array` objects.
|
||||
|
||||
> The JS code for exporting to the XLSB format is:
|
||||
```js
|
||||
var u8 = XLSX.write(wb, {bookType: 'xlsb', type: 'buffer'});
|
||||
```
|
||||
The file format can be changed with the `bookType` option[^4]
|
||||
|
||||
```csharp
|
||||
Jint.Native.JsValue xlsb = engine.Evaluate("XLSX.write(wb, {bookType: 'xlsb', type: 'buffer'})");
|
||||
```
|
||||
|
||||
`xlsb` represents a `Uint8Array`. `xlsb.AsUint8Array()` returns the bytes as a
|
||||
`byte[]` array which can be exported with `System.IO.File.WriteAllBytes`:
|
||||
|
||||
```csharp
|
||||
byte[] outfile = xlsb.AsUint8Array();
|
||||
System.IO.File.WriteAllBytes("SheetJSJint.xlsb", outfile);
|
||||
```
|
||||
|
||||
## Integration Example
|
||||
|
||||
:::note
|
||||
|
||||
This demo was tested in the following deployments:
|
||||
|
||||
| Architecture | Jint Version | Date |
|
||||
|:-------------|:------------------|:-----------|
|
||||
| `darwin-x64` | `3.0.0-beta-2051` | 2023-09-16 |
|
||||
| `win10-x64` | `3.0.0-beta-2051` | 2023-09-16 |
|
||||
|
||||
:::
|
||||
|
||||
0) Install .NET[^5]
|
||||
|
||||
### Platform Configuration
|
||||
|
||||
1) Set the `DOTNET_CLI_TELEMETRY_OPTOUT` environment variable to `1`.
|
||||
|
||||
<details open><summary><b>How to disable telemetry</b> (click to hide)</summary>
|
||||
|
||||
<Tabs groupId="os">
|
||||
<TabItem value="unix" label="Linux/MacOS">
|
||||
|
||||
Add the following line to `.profile`, `.bashrc` and `.zshrc`:
|
||||
|
||||
```bash
|
||||
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||
```
|
||||
|
||||
Close and restart the Terminal to load the changes.
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="win" label="Windows">
|
||||
|
||||
Type `env` in the search bar and select "Edit the system environment variables".
|
||||
|
||||
In the new window, click the "Environment Variables..." button.
|
||||
|
||||
In the new window, look for the "System variables" section and click "New..."
|
||||
|
||||
Set the "Variable name" to `DOTNET_CLI_TELEMETRY_OPTOUT` and the value to `1`.
|
||||
|
||||
Click "OK" in each window (3 windows) and restart your computer.
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
</details>
|
||||
|
||||
2) Open a new Terminal window in macOS or PowerShell window in Windows.
|
||||
|
||||
### Base Project
|
||||
|
||||
3) Create a new folder `SheetJSJint` and a new project using the `dotnet` tool:
|
||||
|
||||
```bash
|
||||
rm -rf SheetJSJint
|
||||
mkdir SheetJSJint
|
||||
cd SheetJSJint
|
||||
dotnet new console --framework net6.0
|
||||
dotnet run
|
||||
```
|
||||
|
||||
4) Add Jint using the NuGet tool:
|
||||
|
||||
```bash
|
||||
dotnet nuget add source https://www.myget.org/F/jint/api/v3/index.json
|
||||
dotnet add package Jint --version 3.0.0-beta-2051
|
||||
```
|
||||
|
||||
To verify Jint is installed, replace `Program.cs` with the following:
|
||||
|
||||
```csharp title="Program.cs"
|
||||
var engine = new Jint.Engine();
|
||||
Console.WriteLine("Hello {0}", engine.Evaluate("'Sheet' + 'JS'"));
|
||||
```
|
||||
|
||||
After saving, run the program:
|
||||
|
||||
```bash
|
||||
dotnet run
|
||||
```
|
||||
|
||||
The terminal should display `Hello SheetJS`
|
||||
|
||||
### Add SheetJS
|
||||
|
||||
5) Download the standalone script, shim and test file:
|
||||
|
||||
<ul>
|
||||
<li><a href={`https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js`}>xlsx.full.min.js</a></li>
|
||||
<li><a href={`https://cdn.sheetjs.com/xlsx-${current}/package/dist/shim.min.js`}>shim.min.js</a></li>
|
||||
<li><a href="https://sheetjs.com/pres.xlsx">pres.xlsx</a></li>
|
||||
</ul>
|
||||
|
||||
<CodeBlock language="bash">{`\
|
||||
curl -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/shim.min.js
|
||||
curl -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js
|
||||
curl -LO https://sheetjs.com/pres.xlsx`}
|
||||
</CodeBlock>
|
||||
|
||||
6) Replace `Program.cs` with the following:
|
||||
|
||||
```csharp title="Program.cs"
|
||||
var engine = new Jint.Engine();
|
||||
engine.Evaluate("global = globalThis;");
|
||||
engine.Evaluate(File.ReadAllText("shim.min.js"));
|
||||
engine.Evaluate(File.ReadAllText("xlsx.full.min.js"));
|
||||
Console.WriteLine("SheetJS version {0}", engine.Evaluate("XLSX.version"));
|
||||
```
|
||||
|
||||
After saving, run the program:
|
||||
|
||||
```bash
|
||||
dotnet run
|
||||
```
|
||||
|
||||
<p>The terminal should display <code>SheetJS version {current}</code></p>
|
||||
|
||||
### Read and Write Files
|
||||
|
||||
7) Replace `Program.cs` with the following:
|
||||
|
||||
```csharp title="Program.cs"
|
||||
using Jint;
|
||||
|
||||
/* Initialize Jint */
|
||||
var engine = new Jint.Engine();
|
||||
engine.Evaluate("global = globalThis;");
|
||||
|
||||
/* Load SheetJS Scripts */
|
||||
engine.Evaluate(File.ReadAllText("shim.min.js"));
|
||||
engine.Evaluate(File.ReadAllText("xlsx.full.min.js"));
|
||||
Console.WriteLine("SheetJS version {0}", engine.Evaluate("XLSX.version"));
|
||||
|
||||
/* Read and Parse File */
|
||||
byte[] filedata = File.ReadAllBytes(args[0]);
|
||||
Jint.Native.JsValue u8 = engine.Realm.Intrinsics.Uint8Array.Construct(filedata);
|
||||
engine.SetValue("buf", u8);
|
||||
engine.Evaluate("var wb = XLSX.read(buf);");
|
||||
|
||||
/* Print CSV of first worksheet*/
|
||||
engine.Evaluate("var ws = wb.Sheets[wb.SheetNames[0]];");
|
||||
Jint.Native.JsValue csv = engine.Evaluate("XLSX.utils.sheet_to_csv(ws)");
|
||||
Console.Write(csv);
|
||||
|
||||
/* Generate XLSB file and save to SheetJSJint.xlsb */
|
||||
Jint.Native.JsValue xlsb = engine.Evaluate("XLSX.write(wb, {bookType: 'xlsb', type: 'buffer'})");
|
||||
File.WriteAllBytes("SheetJSJint.xlsb", xlsb.AsUint8Array());
|
||||
```
|
||||
|
||||
After saving, run the program and pass the test file name as an argument:
|
||||
|
||||
```bash
|
||||
dotnet run pres.xlsx
|
||||
```
|
||||
|
||||
If successful, the program will print the contents of the first sheet as CSV
|
||||
rows. It will also create `SheetJSJint.xlsb` which can be opened in Excel or
|
||||
another spreadsheet editor.
|
||||
|
||||
:::caution pass
|
||||
|
||||
If the `using Jint;` directive is omitted, the build will fail:
|
||||
|
||||
```
|
||||
'JsValue' does not contain a definition for 'AsUint8Array' and no accessible extension method 'AsUint8Array' accepting a first argument of type 'JsValue' could be found
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
### Standalone Application
|
||||
|
||||
8) Find the runtime identifier (RID) for your platform[^6]. The RID values for
|
||||
tested platforms are listed below:
|
||||
|
||||
| Platform | RID |
|
||||
|:-----------------|:------------|
|
||||
| Intel Mac | `osx-x64` |
|
||||
| Windows 10 (x64) | `win10-x64` |
|
||||
|
||||
9) Build the standalone application. Replace `$RID` with the real value in:
|
||||
|
||||
```bash
|
||||
dotnet publish -c Release -r $RID --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true
|
||||
```
|
||||
|
||||
<details open><summary><b>Tested platforms</b> (click to hide)</summary>
|
||||
|
||||
<Tabs groupId="triple">
|
||||
<TabItem value="darwin-x64" label="Intel Mac">
|
||||
|
||||
For Intel Mac, the RID is `osx-x64` and the command is
|
||||
|
||||
```bash
|
||||
dotnet publish -c Release -r osx-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="win10-x64" label="Windows x64">
|
||||
|
||||
For Windows 10 x64, the RID is `win10-x64` and the command is:
|
||||
|
||||
```powershell
|
||||
dotnet publish -c Release -r win10-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
</details>
|
||||
|
||||
10) Copy the generated executable to the project directory.
|
||||
|
||||
The build from step 9 is placed in `bin\Release\net6.0\$RID\publish` and the
|
||||
binary name will be `SheetJSJint` or `SheetJSJint.exe` depending on OS.
|
||||
|
||||
<details open><summary><b>Tested platforms</b> (click to hide)</summary>
|
||||
|
||||
<Tabs groupId="triple">
|
||||
<TabItem value="darwin-x64" label="Intel Mac">
|
||||
|
||||
For Intel Mac, the RID is `osx-x64` and the command is:
|
||||
|
||||
```bash
|
||||
cp bin/Release/net6.0/osx-x64/publish/SheetJSJint .
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="win10-x64" label="Windows x64">
|
||||
|
||||
For Windows 10 x64, the RID is `win10-x64` and the command is:
|
||||
|
||||
```powershell
|
||||
copy .\bin\Release\net6.0\win10-x64\publish\SheetJSJint.exe .
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
</details>
|
||||
|
||||
11) Run the generated command.
|
||||
|
||||
<Tabs groupId="os">
|
||||
<TabItem value="unix" label="Linux/MacOS">
|
||||
|
||||
```bash
|
||||
./SheetJSJint pres.xlsx
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="win" label="Windows">
|
||||
|
||||
```powershell
|
||||
.\SheetJSJint pres.xlsx
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
[^1]: The Jint project recommends the ["MyGet" service](https://www.myget.org/feed/jint/package/nuget/Jint). According to the developers, the ["NuGet" package](https://www.nuget.org/packages/jint) is "occasionally published".
|
||||
[^2]: See [`read` in "Reading Files"](/docs/api/parse-options)
|
||||
[^3]: See [`write` in "Writing Files"](/docs/api/write-options)
|
||||
[^4]: See ["Supported Output Formats" in "Writing Files"](/docs/api/write-options#supported-output-formats) for details on `bookType`
|
||||
[^5]: At the time of writing, <https://dotnet.microsoft.com/en-us/download> is the official endpoint.
|
||||
[^6]: See [".NET RID Catalog"](https://learn.microsoft.com/en-us/dotnet/core/rid-catalog) in the .NET documentation
|
@ -204,6 +204,12 @@ build/bin/jerry xlsx.jerry.js; echo $?
|
||||
|
||||
</details>
|
||||
|
||||
### Jint
|
||||
|
||||
Jint is an embeddable JS engine for .NET written in C#.
|
||||
|
||||
This demo has been moved [to a dedicated page](/docs/demos/engines/jint).
|
||||
|
||||
|
||||
### Nashorn
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user