forked from sheetjs/docs.sheetjs.com
		
	silicone
This commit is contained in:
		
							parent
							
								
									19dfa57120
								
							
						
					
					
						commit
						7fbd794137
					
				@ -334,7 +334,7 @@ const concat_RS = (stream)  => new Promise((res, rej) => {
 | 
			
		||||
 | 
			
		||||
3) Edit `SheetJSIMAP.js` and replace the highlighted lines:
 | 
			
		||||
 | 
			
		||||
- `user: "**",` the value should be the sender email address
 | 
			
		||||
- `user: "**",` the value should be the account address
 | 
			
		||||
- `pass: "**"` the value should be the app password from earlier
 | 
			
		||||
 | 
			
		||||
4) Download <https://sheetjs.com/pres.numbers>.  Using a different account, send
 | 
			
		||||
@ -456,8 +456,7 @@ function SheetJSPreviewPSTSheets() {
 | 
			
		||||
    <b>Attachments</b>
 | 
			
		||||
    <ul>{files.map((f,j) => (
 | 
			
		||||
      <li key={j}><a onClick={()=>view(j)}>{f.filename} (click to view)</a></li>
 | 
			
		||||
    ))}
 | 
			
		||||
    </ul>
 | 
			
		||||
    ))}</ul>
 | 
			
		||||
    <b>Table View</b><br/>
 | 
			
		||||
    <div dangerouslySetInnerHTML={{__html}}></div>
 | 
			
		||||
  </> );
 | 
			
		||||
 | 
			
		||||
@ -90,7 +90,7 @@ npx react-native init SheetJSRNFetch --version="0.72.0-rc.1"
 | 
			
		||||
 | 
			
		||||
<CodeBlock language="bash">{`\
 | 
			
		||||
cd SheetJSRNFetch
 | 
			
		||||
curl -LO https://oss.sheetjs.com/assets/img/logo.png
 | 
			
		||||
curl -LO https://docs.sheetjs.com/logo.png
 | 
			
		||||
npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz
 | 
			
		||||
npm i -S react-native-table-component@1.2.0 @types/react-native-table-component`}
 | 
			
		||||
</CodeBlock>
 | 
			
		||||
@ -466,7 +466,7 @@ npx react-native init SheetJSRN --version="0.72.0-rc.1"
 | 
			
		||||
 | 
			
		||||
<CodeBlock language="bash">{`\
 | 
			
		||||
cd SheetJSRN
 | 
			
		||||
curl -LO https://oss.sheetjs.com/assets/img/logo.png
 | 
			
		||||
curl -LO https://docs.sheetjs.com/logo.png
 | 
			
		||||
npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz
 | 
			
		||||
npm i -S react-native-table-component@1.2.0 react-native-document-picker@8.2.0`}
 | 
			
		||||
</CodeBlock>
 | 
			
		||||
 | 
			
		||||
@ -43,6 +43,7 @@ This demo was tested in the following deployments:
 | 
			
		||||
| Architecture | Version | Node Target | Date       |
 | 
			
		||||
|:-------------|:--------|:------------|:-----------|
 | 
			
		||||
| `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 |
 | 
			
		||||
| `linux-x64`  | `5.8.1` | `18.5.0`    | 2023-05-08 |
 | 
			
		||||
 | 
			
		||||
@ -51,6 +52,7 @@ This demo was tested in the following deployments:
 | 
			
		||||
| Architecture | Version      | Node Target | Date       |
 | 
			
		||||
|:-------------|:-------------|:------------|:-----------|
 | 
			
		||||
| `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 |
 | 
			
		||||
| `linux-x64`  | `4.0.0-rc.2` | `14.15.3`   | 2023-05-08 |
 | 
			
		||||
 | 
			
		||||
@ -59,6 +61,7 @@ This demo was tested in the following deployments:
 | 
			
		||||
| Architecture | Version | Node Target | Date       |
 | 
			
		||||
|:-------------|:--------|:------------|:-----------|
 | 
			
		||||
| `darwin-x64` | `2.0.1` | `20.1.0`    | 2023-05-08 |
 | 
			
		||||
| `darwin-arm` | `2.0.1` | `20.2.0`    | 2023-06-05 |
 | 
			
		||||
| `linux-x64`  | `2.0.1` | `20.1.0`    | 2023-05-08 |
 | 
			
		||||
 | 
			
		||||
</details>
 | 
			
		||||
@ -108,6 +111,17 @@ npx nexe -t 14.15.3 xlsx-cli.js
 | 
			
		||||
 | 
			
		||||
This generates `xlsx-cli` or `xlsx-cli.exe` depending on platform.
 | 
			
		||||
 | 
			
		||||
:::caution
 | 
			
		||||
 | 
			
		||||
When the demo was tested on `darwin-arm`, the `mac-arm64` pre-built package was
 | 
			
		||||
missing.  The package must be built from source:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
npx nexe xlsx-cli.js --build --python=$(which python3) --make="-j8"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="pkg" label="pkg">
 | 
			
		||||
 | 
			
		||||
@ -132,7 +146,7 @@ npx boxednode@2.0.1 -s xlsx-cli.js -t xlsx-cli
 | 
			
		||||
</Tabs>
 | 
			
		||||
 | 
			
		||||
4) Run the generated program, passing `pres.numbers` as the argument.  For
 | 
			
		||||
example, on an Intel Mac, `nexe` generates `xlsx-cli` so the command is:
 | 
			
		||||
example, `nexe` generates `xlsx-cli` in macOS so the command is:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
./xlsx-cli pres.numbers
 | 
			
		||||
@ -150,6 +164,7 @@ This demo was last tested in the following deployments:
 | 
			
		||||
| Architecture | V8 Version   | Date       |
 | 
			
		||||
|:-------------|:-------------|:-----------|
 | 
			
		||||
| `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 |
 | 
			
		||||
 | 
			
		||||
@ -237,6 +252,7 @@ This demo was last tested in the following deployments:
 | 
			
		||||
| Architecture | Version  | Date       |
 | 
			
		||||
|:-------------|:---------|:-----------|
 | 
			
		||||
| `darwin-x64` | `1.33.2` | 2023-05-08 |
 | 
			
		||||
| `darwin-arm` | `1.34.1` | 2023-06-05 |
 | 
			
		||||
| `win32-x64`  | `1.33.2` | 2023-05-08 |
 | 
			
		||||
| `linux-x64`  | `1.33.2` | 2023-05-08 |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -334,7 +334,7 @@ function SheetJSFetchCSVStreamWorker() {
 | 
			
		||||
  const [__html, setHTML] = React.useState("");
 | 
			
		||||
  const [state, setState] = React.useState("");
 | 
			
		||||
  const [cnt, setCnt] = React.useState(0);
 | 
			
		||||
  const [url, setUrl] = React.useState("https://oss.sheetjs.com/test_files/large_strings.xlsx");
 | 
			
		||||
  const [url, setUrl] = React.useState("https://docs.sheetjs.com/test_files/large_strings.xlsx");
 | 
			
		||||
\n\
 | 
			
		||||
  return ( <>
 | 
			
		||||
    <b>URL: </b><input type="text" value={url} onChange={(e) => setUrl(e.target.value)} size="80"/>
 | 
			
		||||
 | 
			
		||||
@ -578,7 +578,7 @@ function SheetJSFetchCSVStreamFile() {
 | 
			
		||||
  const [__html, setHTML] = React.useState("");
 | 
			
		||||
  const [cnt, setCnt] = React.useState(0);
 | 
			
		||||
  const [hz, setHz] = React.useState(0);
 | 
			
		||||
  const [url, setUrl] = React.useState("https://oss.sheetjs.com/test_files/large_strings.xlsx");
 | 
			
		||||
  const [url, setUrl] = React.useState("https://docs.sheetjs.com/test_files/large_strings.xlsx");
 | 
			
		||||
  const ref = React.useRef(null);
 | 
			
		||||
\n\
 | 
			
		||||
  return ( <>
 | 
			
		||||
 | 
			
		||||
@ -118,6 +118,7 @@ This demo was tested in the following deployments:
 | 
			
		||||
| Architecture | Version | Date       |
 | 
			
		||||
|:-------------|:--------|:-----------|
 | 
			
		||||
| `darwin-x64` | `2.7.0` | 2023-02-12 |
 | 
			
		||||
| `darwin-arm` | `2.7.0` | 2023-06-05 |
 | 
			
		||||
| `linux-x64`  | `2.7.0` | 2023-06-02 |
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
@ -5,6 +5,8 @@ pagination_next: solutions/input
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
import current from '/version.js';
 | 
			
		||||
import Tabs from '@theme/Tabs';
 | 
			
		||||
import TabItem from '@theme/TabItem';
 | 
			
		||||
import CodeBlock from '@theme/CodeBlock';
 | 
			
		||||
 | 
			
		||||
V8 is an embeddable JS engine written in C++. It powers Chromium and Chrome,
 | 
			
		||||
@ -110,6 +112,7 @@ This demo was tested in the following deployments:
 | 
			
		||||
| V8 Version    | Platform     | OS Version   | Compiler       | Date       |
 | 
			
		||||
|:--------------|:-------------|:-------------|:---------------|:-----------|
 | 
			
		||||
| `11.3.244.11` | `darwin-x64` | macOS 13.2   | `clang 14.0.3` | 2023-05-20 |
 | 
			
		||||
| `11.3.244.11` | `darwin-arm` | macOS 13.0   | `clang 14.0.3` | 2023-06-05 |
 | 
			
		||||
| `11.3.244.11` | `linux-x64`  | HoloOS 3.4.6 | `gcc 12.2.0`   | 2023-05-20 |
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
@ -132,11 +135,28 @@ The build process is long and will test your patience.
 | 
			
		||||
 | 
			
		||||
### Preparation
 | 
			
		||||
 | 
			
		||||
1) Download and install `depot_tools`:
 | 
			
		||||
0) Prepare `/usr/local/lib`:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
mkdir -p /usr/local/lib
 | 
			
		||||
cd /usr/local/lib
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
:::caution
 | 
			
		||||
 | 
			
		||||
If this step throws a permission error, run:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
sudo mkdir -p /usr/local/lib
 | 
			
		||||
sudo chmod 777 /usr/local/lib
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
1) Download and install `depot_tools`:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
@ -178,13 +198,30 @@ git checkout refs/tags/11.3.244.11 -b sample -t
 | 
			
		||||
 | 
			
		||||
6) Build the static library.
 | 
			
		||||
 | 
			
		||||
<Tabs groupId="triple">
 | 
			
		||||
  <TabItem value="darwin-x64" label="Intel Mac">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
tools/dev/v8gen.py x64.release.sample
 | 
			
		||||
ninja -C out.gn/x64.release.sample v8_monolith
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="darwin-arm" label="Apple Silicon">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
tools/dev/v8gen.py arm64.release.sample
 | 
			
		||||
ninja -C out.gn/arm64.release.sample v8_monolith
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
</Tabs>
 | 
			
		||||
 | 
			
		||||
7) Ensure the sample `hello-world` compiles and runs:
 | 
			
		||||
 | 
			
		||||
<Tabs groupId="triple">
 | 
			
		||||
  <TabItem value="darwin-x64" label="Intel Mac">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
g++ -I. -Iinclude samples/hello-world.cc -o hello_world -fno-rtti -lv8_monolith \
 | 
			
		||||
    -lv8_libbase -lv8_libplatform -ldl -Lout.gn/x64.release.sample/obj/ -pthread \
 | 
			
		||||
@ -192,6 +229,20 @@ g++ -I. -Iinclude samples/hello-world.cc -o hello_world -fno-rtti -lv8_monolith
 | 
			
		||||
./hello_world
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="darwin-arm" label="Apple Silicon">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
g++ -I. -Iinclude samples/hello-world.cc -o hello_world -fno-rtti -lv8_monolith \
 | 
			
		||||
    -lv8_libbase -lv8_libplatform -ldl -Lout.gn/arm64.release.sample/obj/ -pthread \
 | 
			
		||||
    -std=c++17 -DV8_COMPRESS_POINTERS=1 -DV8_ENABLE_SANDBOX
 | 
			
		||||
./hello_world
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
</Tabs>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### Prepare Project
 | 
			
		||||
 | 
			
		||||
8) Make a new project folder:
 | 
			
		||||
@ -210,11 +261,25 @@ cp ~/dev/v8/v8/samples/hello-world.cc .
 | 
			
		||||
 | 
			
		||||
10) Create symbolic links to the `include` headers and `obj` library folders:
 | 
			
		||||
 | 
			
		||||
<Tabs groupId="triple">
 | 
			
		||||
  <TabItem value="darwin-x64" label="Intel Mac">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
ln -s ~/dev/v8/v8/include
 | 
			
		||||
ln -s ~/dev/v8/v8/out.gn/x64.release.sample/obj
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="darwin-arm" label="Apple Silicon">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
ln -s ~/dev/v8/v8/include
 | 
			
		||||
ln -s ~/dev/v8/v8/out.gn/arm64.release.sample/obj
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
</Tabs>
 | 
			
		||||
 | 
			
		||||
11) Build and run the `hello-world` example from this folder:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
@ -295,6 +360,7 @@ This demo was last tested in the following deployments:
 | 
			
		||||
| Architecture | V8 Crate | Date       |
 | 
			
		||||
|:-------------|:---------|:-----------|
 | 
			
		||||
| `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 |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -129,12 +129,12 @@ try? out.write(to: out_path, atomically: false, encoding: String.Encoding.isoLat
 | 
			
		||||
 | 
			
		||||
:::note
 | 
			
		||||
 | 
			
		||||
This demo was tested on 2023 February 12.  `swift --version` printed:
 | 
			
		||||
This demo was tested in the following environments:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
swift-driver version: 1.62.15 Apple Swift version 5.7.2
 | 
			
		||||
Target: x86_64-apple-macosx12.0
 | 
			
		||||
```
 | 
			
		||||
| Architecture | Swift   | Date       |
 | 
			
		||||
|:-------------|:--------|:-----------|
 | 
			
		||||
| `darwin-x64` | `5.7.2` | 2023-02-12 |
 | 
			
		||||
| `darwin-arm` | `5.8.1` | 2023-06-05 |
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -90,7 +90,12 @@ _ = ioutil.WriteFile("sheetjs.xlsx", buf, 0644)
 | 
			
		||||
 | 
			
		||||
:::note
 | 
			
		||||
 | 
			
		||||
This demo was tested on 2023 February 14.
 | 
			
		||||
This demo was tested in the following deployments:
 | 
			
		||||
 | 
			
		||||
| Architecture | Git Commit | Go version | Date       |
 | 
			
		||||
|:-------------|:-----------|:-----------|:-----------|
 | 
			
		||||
| `darwin-x64` | `28ee0ee`  | `1.19.3`   | 2023-06-05 |
 | 
			
		||||
| `darwin-arm` | `28ee0ee`  | `1.20.4`   | 2023-06-05 |
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -121,6 +121,7 @@ This demo was tested in the following deployments:
 | 
			
		||||
| Architecture | Git Commit | Date       |
 | 
			
		||||
|:-------------|:-----------|:-----------|
 | 
			
		||||
| `darwin-x64` | `2788d71`  | 2023-02-12 |
 | 
			
		||||
| `darwin-arm` | `2788d71`  | 2023-06-05 |
 | 
			
		||||
| `linux-x64`  | `2788d71`  | 2023-06-02 |
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
@ -156,48 +156,53 @@ while the "CLI Test" demonstrates other concepts using the `hermes` CLI tool.
 | 
			
		||||
 | 
			
		||||
:::note
 | 
			
		||||
 | 
			
		||||
This demo was last tested on 2023 May 30 against Hermes commit `869312f` on
 | 
			
		||||
a Intel Mac. `llvm-g++ -v` printed:
 | 
			
		||||
This demo was tested in the following deployments:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
Apple clang version 14.0.0 (clang-1400.0.29.202)
 | 
			
		||||
Target: x86_64-apple-darwin21.6.0
 | 
			
		||||
```
 | 
			
		||||
| Architecture | Git Commit | Date       |
 | 
			
		||||
|:-------------|:-----------|:-----------|
 | 
			
		||||
| `darwin-x64` | `869312f`  | 2023-05-30 |
 | 
			
		||||
| `darwin-arm` | `869312f`  | 2023-06-05 |
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
0) Make a project directory:
 | 
			
		||||
0) Install build dependencies:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
brew install icu4c cmake ninja
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
1) Make a project directory:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
mkdir sheetjs-hermes
 | 
			
		||||
cd sheetjs-hermes
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
1) Download the [`Makefile`](pathname:///hermes/Makefile):
 | 
			
		||||
2) Download the [`Makefile`](pathname:///hermes/Makefile):
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
curl -LO https://docs.sheetjs.com/hermes/Makefile
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
2) Download [`sheetjs-hermes.cpp`](pathname:///hermes/sheetjs-hermes.cpp):
 | 
			
		||||
3) Download [`sheetjs-hermes.cpp`](pathname:///hermes/sheetjs-hermes.cpp):
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
curl -LO https://docs.sheetjs.com/hermes/sheetjs-hermes.cpp
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
3) Build the library (this is the `init` target):
 | 
			
		||||
4) Build the library (this is the `init` target):
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
make init
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
4) Build the application:
 | 
			
		||||
5) Build the application:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
make sheetjs-hermes
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
5) Download the standalone script and test file:
 | 
			
		||||
6) Download the standalone script 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>
 | 
			
		||||
@ -209,7 +214,7 @@ curl -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js
 | 
			
		||||
curl -LO https://sheetjs.com/pres.numbers`}
 | 
			
		||||
</CodeBlock>
 | 
			
		||||
 | 
			
		||||
6) Run the application:
 | 
			
		||||
7) Run the application:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
./sheetjs-hermes pres.numbers
 | 
			
		||||
 | 
			
		||||
@ -5,6 +5,8 @@ pagination_next: solutions/input
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
import current from '/version.js';
 | 
			
		||||
import Tabs from '@theme/Tabs';
 | 
			
		||||
import TabItem from '@theme/TabItem';
 | 
			
		||||
import CodeBlock from '@theme/CodeBlock';
 | 
			
		||||
 | 
			
		||||
ChakraCore is an embeddable JS engine written in C++.
 | 
			
		||||
@ -114,37 +116,89 @@ while the "CLI Test" demonstrates other concepts using the `ch` CLI tool.
 | 
			
		||||
 | 
			
		||||
:::note
 | 
			
		||||
 | 
			
		||||
This demo was last tested on 2023 April 09 against ChakraCore commit `c3ead3f`
 | 
			
		||||
on a Intel Mac. `gcc -v` printed:
 | 
			
		||||
This demo was tested in the following deployments:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
Apple clang version 14.0.0 (clang-1400.0.29.202)
 | 
			
		||||
Target: x86_64-apple-darwin21.6.0
 | 
			
		||||
```
 | 
			
		||||
| Architecture | Git Commit | Date       |
 | 
			
		||||
|:-------------|:-----------|:-----------|
 | 
			
		||||
| `darwin-x64` | `c3ead3f`  | 2023-04-09 |
 | 
			
		||||
| `darwin-arm` | `c3ead3f`  | 2023-06-05 |
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
0) Build ChakraCore:
 | 
			
		||||
0) Install `icu` and `cmake` dependencies.  On macOS:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
brew install icu4c cmake
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
1) Download ChakraCore:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
git clone https://github.com/Microsoft/ChakraCore
 | 
			
		||||
cd ChakraCore
 | 
			
		||||
git checkout c3ead3f
 | 
			
		||||
cd ..
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
2) Build ChakraCore:
 | 
			
		||||
 | 
			
		||||
<Tabs groupId="triple">
 | 
			
		||||
  <TabItem value="darwin-x64" label="Intel Mac">
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
cd ChakraCore
 | 
			
		||||
./build.sh --static --icu=/usr/local/opt/icu4c/include --test-build -j=8
 | 
			
		||||
cd ..
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
1) Download the source file and `Makefile`:
 | 
			
		||||
  </TabItem>
 | 
			
		||||
  <TabItem value="darwin-arm" label="Apple Silicon">
 | 
			
		||||
 | 
			
		||||
:::info
 | 
			
		||||
 | 
			
		||||
When the demo was last tested, ChakraCore JIT was not supported.
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
cd ChakraCore
 | 
			
		||||
./build.sh --static --icu=/usr/local/opt/icu4c/include --test-build -j=8 --no-jit
 | 
			
		||||
cd ..
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
  </TabItem>
 | 
			
		||||
</Tabs>
 | 
			
		||||
 | 
			
		||||
:::caution
 | 
			
		||||
 | 
			
		||||
When this demo was last tested on macOS, the build failed with the message:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
!!! couldn't find ICU ...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
This was fixed with a local symlink to the `icu4c` folder before the build step:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
cd ChakraCore
 | 
			
		||||
mkdir -p usr/local/opt
 | 
			
		||||
ln -s /opt/homebrew/opt/icu4c usr/local/opt/icu4c
 | 
			
		||||
cd ..
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
3) Download the source file and `Makefile`:
 | 
			
		||||
 | 
			
		||||
- [`sheetjs.ch.cpp`](pathname:///chakra/sheetjs.ch.cpp)
 | 
			
		||||
- [`Makefile`](pathname:///chakra/Makefile)
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
curl -LO https://docs.sheetjs.com/chakra/sheetjs.ch.c
 | 
			
		||||
curl -LO https://docs.sheetjs.com/chakra/sheetjs.ch.cpp
 | 
			
		||||
curl -LO https://docs.sheetjs.com/chakra/Makefile
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
2) Build the sample application:
 | 
			
		||||
4) Build the sample application:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
make
 | 
			
		||||
@ -152,7 +206,26 @@ make
 | 
			
		||||
 | 
			
		||||
This program tries to parse the file specified by the first argument
 | 
			
		||||
 | 
			
		||||
4) Download the standalone script, shim script, and test file:
 | 
			
		||||
:::caution
 | 
			
		||||
 | 
			
		||||
When this demo was last tested on macOS, the build failed with the message:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
clang: error: no such file or directory: '/usr/local/opt/icu4c/lib/libicudata.a'
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
This was fixed by creating a symbolic link:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
cd /usr/local
 | 
			
		||||
sudo mkdir -p opt
 | 
			
		||||
cd opt
 | 
			
		||||
sudo ln -s /opt/homebrew/opt/icu4c
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
5) Download the standalone script, shim script, 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>
 | 
			
		||||
@ -166,7 +239,7 @@ curl -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/shim.min.js
 | 
			
		||||
curl -LO https://sheetjs.com/pres.numbers`}
 | 
			
		||||
</CodeBlock>
 | 
			
		||||
 | 
			
		||||
5) Run the test program:
 | 
			
		||||
6) Run the test program:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
./sheetjs.ch pres.numbers
 | 
			
		||||
 | 
			
		||||
@ -42,7 +42,7 @@ use boa_engine::{Context, Source, JsError};
 | 
			
		||||
/* simple wrapper to evaluate code snippets */
 | 
			
		||||
fn eval_code(c: &mut Context, code: &str) -> Result<String, JsError> {
 | 
			
		||||
  let src = Source::from_bytes(code);
 | 
			
		||||
  match c.eval_script(src) {
 | 
			
		||||
  match c.eval(src) {
 | 
			
		||||
    Ok(res) => { return Ok(res.to_string(c).unwrap().to_std_string_escaped()); }
 | 
			
		||||
    Err(e) => { return Err(e); }
 | 
			
		||||
  };
 | 
			
		||||
@ -61,7 +61,7 @@ use boa_engine::{Context, Source, JsError};
 | 
			
		||||
/* simple wrapper to evaluate an entire script file */
 | 
			
		||||
fn eval_file(c: &mut Context, path: &str) -> Result<String, JsError> {
 | 
			
		||||
  let src = Source::from_filepath(Path::new(path)).unwrap();
 | 
			
		||||
  match c.eval_script(src) {
 | 
			
		||||
  match c.eval(src) {
 | 
			
		||||
    Ok(res) => { return Ok(res.to_string(c).unwrap().to_std_string_escaped()); }
 | 
			
		||||
    Err(e) => { return Err(e); }
 | 
			
		||||
  };
 | 
			
		||||
@ -111,7 +111,12 @@ various SheetJS API functions.
 | 
			
		||||
 | 
			
		||||
:::note
 | 
			
		||||
 | 
			
		||||
This demo was tested on 2023 May 22
 | 
			
		||||
This demo was tested in the following deployments:
 | 
			
		||||
 | 
			
		||||
| Architecture | Date       |
 | 
			
		||||
|:-------------|:-----------|
 | 
			
		||||
| `darwin-x64` | 2023-06-05 |
 | 
			
		||||
| `darwin-arm` | 2023-06-05 |
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -397,7 +397,7 @@ For modern websites targeting Chrome 42+, `fetch` is recommended:
 | 
			
		||||
// XLSX is a global from the standalone script
 | 
			
		||||
 | 
			
		||||
(async() => {
 | 
			
		||||
  const url = "https://oss.sheetjs.com/test_files/formula_stress_test.xlsx";
 | 
			
		||||
  const url = "https://sheetjs.com/pres.xlsx";
 | 
			
		||||
  const data = await (await fetch(url)).arrayBuffer();
 | 
			
		||||
  /* data is an ArrayBuffer */
 | 
			
		||||
  const workbook = XLSX.read(data);
 | 
			
		||||
@ -409,7 +409,7 @@ For modern websites targeting Chrome 42+, `fetch` is recommended:
 | 
			
		||||
For broader support, the `XMLHttpRequest` approach is recommended:
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
var url = "https://oss.sheetjs.com/test_files/formula_stress_test.xlsx";
 | 
			
		||||
var url = "https://sheetjs.com/pres.xlsx";
 | 
			
		||||
 | 
			
		||||
/* set up async GET request */
 | 
			
		||||
var req = new XMLHttpRequest();
 | 
			
		||||
@ -437,7 +437,7 @@ NodeJS releases starting from version 18.0 have native support for fetch:
 | 
			
		||||
```js
 | 
			
		||||
const XLSX = require("xlsx");
 | 
			
		||||
 | 
			
		||||
const url = "https://oss.sheetjs.com/test_files/formula_stress_test.xlsx";
 | 
			
		||||
const url = "https://sheetjs.com/pres.xlsx";
 | 
			
		||||
const data = await (await fetch(url)).arrayBuffer();
 | 
			
		||||
/* data is an ArrayBuffer */
 | 
			
		||||
const workbook = XLSX.read(data);
 | 
			
		||||
@ -451,7 +451,7 @@ For broader compatibility, third-party modules are recommended.
 | 
			
		||||
var XLSX = require("xlsx");
 | 
			
		||||
var request = require("request");
 | 
			
		||||
 | 
			
		||||
var url = "https://oss.sheetjs.com/test_files/formula_stress_test.xlsx";
 | 
			
		||||
var url = "https://sheetjs.com/pres.xlsx";
 | 
			
		||||
request({url: url, encoding: null}, function(err, resp, body) {
 | 
			
		||||
  var workbook = XLSX.read(body);
 | 
			
		||||
 | 
			
		||||
@ -465,7 +465,7 @@ request({url: url, encoding: null}, function(err, resp, body) {
 | 
			
		||||
const XLSX = require("xlsx");
 | 
			
		||||
const axios = require("axios");
 | 
			
		||||
 | 
			
		||||
const url = "https://oss.sheetjs.com/test_files/formula_stress_test.xlsx";
 | 
			
		||||
const url = "https://sheetjs.com/pres.xlsx";
 | 
			
		||||
(async() => {
 | 
			
		||||
  const res = await axios.get(url, {responseType: "arraybuffer"});
 | 
			
		||||
  /* res.data is a Buffer */
 | 
			
		||||
@ -486,7 +486,7 @@ import * as XLSX from 'xlsx';
 | 
			
		||||
import * as cptable from 'xlsx/dist/cpexcel.full.mjs';
 | 
			
		||||
XLSX.set_cptable(cptable);
 | 
			
		||||
 | 
			
		||||
const url = "https://oss.sheetjs.com/test_files/formula_stress_test.xlsx";
 | 
			
		||||
const url = "https://sheetjs.com/pres.xlsx";
 | 
			
		||||
// highlight-next-line
 | 
			
		||||
const data = await (await fetch(url)).arrayBuffer();
 | 
			
		||||
/* data is an ArrayBuffer */
 | 
			
		||||
@ -505,7 +505,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\
 | 
			
		||||
const url = "https://oss.sheetjs.com/test_files/formula_stress_test.xlsx";
 | 
			
		||||
const url = "https://sheetjs.com/pres.xlsx";
 | 
			
		||||
// highlight-next-line
 | 
			
		||||
const data = await (await fetch(url)).arrayBuffer();
 | 
			
		||||
/* data is an ArrayBuffer */
 | 
			
		||||
@ -531,7 +531,7 @@ resources.  Responses should be manually concatenated using `Buffer.concat`:
 | 
			
		||||
const XLSX = require("xlsx");
 | 
			
		||||
const { net } = require("electron");
 | 
			
		||||
 | 
			
		||||
const url = "https://oss.sheetjs.com/test_files/formula_stress_test.xlsx";
 | 
			
		||||
const url = "https://sheetjs.com/pres.xlsx";
 | 
			
		||||
const req = net.request(url);
 | 
			
		||||
req.on("response", (res) => {
 | 
			
		||||
  const bufs = []; // this array will collect all of the buffers
 | 
			
		||||
 | 
			
		||||
@ -619,7 +619,7 @@ import { read, utils } from "xlsx";
 | 
			
		||||
 | 
			
		||||
import 'react-data-grid/lib/styles.css';
 | 
			
		||||
 | 
			
		||||
const url = "https://oss.sheetjs.com/test_files/RkNumber.xls";
 | 
			
		||||
const url = "https://sheetjs.com/pres.xlsx";
 | 
			
		||||
 | 
			
		||||
export default function App() {
 | 
			
		||||
  const [columns, setColumns] = useState([]);
 | 
			
		||||
 | 
			
		||||
@ -9,7 +9,7 @@ use boa_engine::property::Attribute;
 | 
			
		||||
 | 
			
		||||
fn eval_file(c: &mut Context, path: &str) -> Result<String, JsError> {
 | 
			
		||||
  let src = Source::from_filepath(Path::new(path)).unwrap();
 | 
			
		||||
  match c.eval_script(src) {
 | 
			
		||||
  match c.eval(src) {
 | 
			
		||||
    Ok(res) => { return Ok(res.to_string(c).unwrap().to_std_string_escaped()); }
 | 
			
		||||
    Err(e) => { return Err(e); }
 | 
			
		||||
  };
 | 
			
		||||
@ -17,7 +17,7 @@ fn eval_file(c: &mut Context, path: &str) -> Result<String, JsError> {
 | 
			
		||||
 | 
			
		||||
fn eval_code(c: &mut Context, code: &str) -> Result<String, JsError> {
 | 
			
		||||
  let src = Source::from_bytes(code);
 | 
			
		||||
  match c.eval_script(src) {
 | 
			
		||||
  match c.eval(src) {
 | 
			
		||||
    Ok(res) => { return Ok(res.to_string(c).unwrap().to_std_string_escaped()); }
 | 
			
		||||
    Err(e) => { return Err(e); }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								docz/static/logo.png
									
									
									
									
									
										Normal file
									
								
							
							
								
									
								
								
								
								
								
									
									
								
							
						
						
									
										
											BIN
										
									
								
								docz/static/logo.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 36 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docz/static/test_files/large_strings.xlsx
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										
											BIN
										
									
								
								docz/static/test_files/large_strings.xlsx
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user