forked from sheetjs/docs.sheetjs.com
		
	HTTP Downloads demo refresh
This commit is contained in:
		
							parent
							
								
									44adb843c1
								
							
						
					
					
						commit
						7d749963f4
					
				| @ -16,6 +16,7 @@ const EngineData = () => { | ||||
|     <div dangerouslySetInnerHTML={{__html: engines}}/> | ||||
|     <p>The following bindings have been tested:</p> | ||||
|     <div dangerouslySetInnerHTML={{__html: binding}}/> | ||||
|     <p>Asterisks (✱) in the Windows columns mark tests that were run in Windows Subsystem for Linux (WSL)</p> | ||||
|   </> ); | ||||
| }; | ||||
| export default EngineData; | ||||
| @ -182,8 +182,8 @@ | ||||
|     <Cell><Data ss:Type="String">C</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✱</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✱</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|    </Row> | ||||
| @ -212,7 +212,7 @@ | ||||
|     <Cell><Data ss:Type="String">C#</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"/> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"/> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
| @ -322,7 +322,7 @@ | ||||
|     <Cell><Data ss:Type="String">Java</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"/> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"/> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|     <Cell ss:StyleID="s16"><Data ss:Type="String">✔</Data></Cell> | ||||
|  | ||||
| @ -40,7 +40,7 @@ This browser demo was tested in the following environments: | ||||
| 
 | ||||
| | Browser     | Date       | | ||||
| |:------------|:-----------| | ||||
| | Chrome 119  | 2024-01-06 | | ||||
| | Chrome 126  | 2024-06-21 | | ||||
| | Safari 17.4 | 2024-06-20 | | ||||
| 
 | ||||
| ::: | ||||
|  | ||||
| @ -11,10 +11,19 @@ pagination_next: demos/net/upload/index | ||||
| import current from '/version.js'; | ||||
| import CodeBlock from '@theme/CodeBlock'; | ||||
| 
 | ||||
| `XMLHttpRequest` and `fetch` browser APIs enable binary data transfer between | ||||
| web browser clients and web servers.  Since this library works in web browsers, | ||||
| server conversion work can be offloaded to the client!  This demo shows a few | ||||
| common scenarios involving browser APIs and popular wrapper libraries. | ||||
| [SheetJS](https://sheetjs.com) is a JavaScript library for reading and writing | ||||
| data from spreadsheets. | ||||
| 
 | ||||
| A number of JavaScript APIs, including `XMLHttpRequest` and `fetch`, allow | ||||
| scripts to download spreadsheets for further processing. | ||||
| 
 | ||||
| This demo uses various APIs and wrapper libraries to download workbooks and pass | ||||
| raw binary data to SheetJS libraries. | ||||
| 
 | ||||
| - ["Browser Demos"](#browser-demos) run entirely within the web browser. A test | ||||
|   workbook will be downloaded and parsed in the web browser. | ||||
| 
 | ||||
| - ["NodeJS Demos"](#nodejs-demos) run in NodeJS and other server-side platforms. | ||||
| 
 | ||||
| :::info pass | ||||
| 
 | ||||
| @ -36,7 +45,7 @@ functions functions can send files to clients. | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| ## Downloading Binary Data | ||||
| ## Binary Data | ||||
| 
 | ||||
| Most interesting spreadsheet files are binary data that contain byte sequences | ||||
| that represent invalid UTF-8 characters. | ||||
| @ -374,7 +383,7 @@ The `https` module provides a low-level `get` method for HTTPS GET requests: | ||||
| ```js title="SheetJSHTTPSGet.js" | ||||
| var https = require("https"), XLSX = require("xlsx"); | ||||
| 
 | ||||
| https.get('https://docs.sheetjs.com/pres.numbers', function(res) { | ||||
| https.get('https://docs.sheetjs.com/pres.xlsx', function(res) { | ||||
|   var bufs = []; | ||||
|   res.on('data', function(chunk) { bufs.push(chunk); }); | ||||
|   res.on('end', function() { | ||||
| @ -387,15 +396,36 @@ https.get('https://docs.sheetjs.com/pres.numbers', function(res) { | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| <details> | ||||
|   <summary><b>Complete Example</b> (click to show)</summary> | ||||
| :::note Tested Deployments | ||||
| 
 | ||||
| :::note Tested Environments | ||||
| This demo was tested in the following environments: | ||||
| 
 | ||||
| This demo was last tested on 2024 January 15 against NodeJS `20.11.0` | ||||
| | NodeJS     | Date       | Workarounds                    | | ||||
| |:-----------|:-----------|:-------------------------------| | ||||
| | `0.10.48`  | 2024-06-21 | `NODE_TLS_REJECT_UNAUTHORIZED` | | ||||
| | `0.12.18`  | 2024-06-21 | `NODE_TLS_REJECT_UNAUTHORIZED` | | ||||
| | `4.9.1`    | 2024-06-21 | `NODE_TLS_REJECT_UNAUTHORIZED` | | ||||
| | `6.17.1`   | 2024-06-21 | `NODE_TLS_REJECT_UNAUTHORIZED` | | ||||
| | `8.17.0`   | 2024-06-21 | `NODE_TLS_REJECT_UNAUTHORIZED` | | ||||
| | `10.24.1`  | 2024-06-21 |                                | | ||||
| | `12.22.12` | 2024-06-21 |                                | | ||||
| | `14.21.3`  | 2024-06-21 |                                | | ||||
| | `16.20.2`  | 2024-06-21 |                                | | ||||
| | `18.20.3`  | 2024-06-21 |                                | | ||||
| | `20.15.0`  | 2024-06-21 |                                | | ||||
| | `22.3.0`   | 2024-06-21 |                                | | ||||
| 
 | ||||
| The `NODE_TLS_REJECT_UNAUTHORIZED` workaround sets the value to `'0'`: | ||||
| 
 | ||||
| ```js title="Legacy NodeJS Certificate has Expired Bypass (prepend to script)" | ||||
| process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; | ||||
| ``` | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| <details> | ||||
|   <summary><b>Complete Example</b> (click to show)</summary> | ||||
| 
 | ||||
| 1) Install the [NodeJS module](/docs/getting-started/installation/nodejs) | ||||
| 
 | ||||
| <CodeBlock language="bash">{`\ | ||||
| @ -412,11 +442,24 @@ node SheetJSHTTPSGet.js | ||||
| 
 | ||||
| If successful, the script will print CSV contents of the test file. | ||||
| 
 | ||||
| :::caution pass | ||||
| 
 | ||||
| For older versions of NodeJS, the script will fail due to a certificate error. | ||||
| The error can be suppressed by prepending the following line to the script: | ||||
| 
 | ||||
| ```js title="SheetJSHTTPSGet.js (add to top)" | ||||
| process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; | ||||
| ``` | ||||
| 
 | ||||
| **It is strongly encouraged to upgrade to a newer NodeJS version!** | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| ### fetch | ||||
| 
 | ||||
| :::caution pass | ||||
| :::info pass | ||||
| 
 | ||||
| Experimental support for `fetch` was introduced in NodeJS `16.15.0`. It will be | ||||
| considered stable in NodeJS LTS version `22`. | ||||
| @ -435,15 +478,21 @@ async function parse_from_url(url) { | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| <details> | ||||
|   <summary><b>Complete Example</b> (click to show)</summary> | ||||
| :::note Tested Deployments | ||||
| 
 | ||||
| :::note Tested Environments | ||||
| This demo was tested in the following environments: | ||||
| 
 | ||||
| This demo was last tested on 2024 January 15 against NodeJS `20.11.0` | ||||
| | NodeJS     | Date       | | ||||
| |:-----------|:-----------| | ||||
| | `18.20.3`  | 2024-06-21 | | ||||
| | `20.15.0`  | 2024-06-21 | | ||||
| | `22.3.0`   | 2024-06-21 | | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| <details> | ||||
|   <summary><b>Complete Example</b> (click to show)</summary> | ||||
| 
 | ||||
| 1) Install the [NodeJS module](/docs/getting-started/installation/nodejs) | ||||
| 
 | ||||
| <CodeBlock language="bash">{`\ | ||||
| @ -498,7 +547,7 @@ Setting the option `encoding: null` passes raw buffers: | ||||
| 
 | ||||
| ```js title="SheetJSRequest.js" | ||||
| var XLSX = require('xlsx'), request = require('request'); | ||||
| var url = 'https://docs.sheetjs.com/pres.numbers'; | ||||
| var url = 'https://docs.sheetjs.com/pres.xlsx'; | ||||
| 
 | ||||
| /* call `request` with the option `encoding: null` */ | ||||
| // highlight-next-line | ||||
| @ -515,15 +564,36 @@ request(url, {encoding: null}, function(err, res, data) { | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| <details> | ||||
|   <summary><b>Complete Example</b> (click to show)</summary> | ||||
| :::note Tested Deployments | ||||
| 
 | ||||
| :::note Tested Environments | ||||
| This demo was tested in the following environments: | ||||
| 
 | ||||
| This demo was last tested on 2024 January 15 against request `2.88.2` | ||||
| | NodeJS     | Date       | Workarounds                    | | ||||
| |:-----------|:-----------|:-------------------------------| | ||||
| | `0.10.48`  | 2024-06-21 | `NODE_TLS_REJECT_UNAUTHORIZED` | | ||||
| | `0.12.18`  | 2024-06-21 | `NODE_TLS_REJECT_UNAUTHORIZED` | | ||||
| | `4.9.1`    | 2024-06-21 | `NODE_TLS_REJECT_UNAUTHORIZED` | | ||||
| | `6.17.1`   | 2024-06-21 | `NODE_TLS_REJECT_UNAUTHORIZED` | | ||||
| | `8.17.0`   | 2024-06-21 | `NODE_TLS_REJECT_UNAUTHORIZED` | | ||||
| | `10.24.1`  | 2024-06-21 |                                | | ||||
| | `12.22.12` | 2024-06-21 |                                | | ||||
| | `14.21.3`  | 2024-06-21 |                                | | ||||
| | `16.20.2`  | 2024-06-21 |                                | | ||||
| | `18.20.3`  | 2024-06-21 |                                | | ||||
| | `20.15.0`  | 2024-06-21 |                                | | ||||
| | `22.3.0`   | 2024-06-21 |                                | | ||||
| 
 | ||||
| The `NODE_TLS_REJECT_UNAUTHORIZED` workaround sets the value to `'0'`: | ||||
| 
 | ||||
| ```js title="Legacy NodeJS Certificate has Expired Bypass (prepend to script)" | ||||
| process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; | ||||
| ``` | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| <details> | ||||
|   <summary><b>Complete Example</b> (click to show)</summary> | ||||
| 
 | ||||
| 1) Install the [NodeJS module](/docs/getting-started/installation/nodejs) | ||||
| 
 | ||||
| <CodeBlock language="bash">{`\ | ||||
| @ -540,6 +610,19 @@ node SheetJSRequest.js | ||||
| 
 | ||||
| If successful, the script will print CSV contents of the test file. | ||||
| 
 | ||||
| :::caution pass | ||||
| 
 | ||||
| For older versions of NodeJS, the script will fail due to a certificate error. | ||||
| The error can be suppressed by prepending the following line to the script: | ||||
| 
 | ||||
| ```js title="SheetJSRequest.js (add to top)" | ||||
| process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; | ||||
| ``` | ||||
| 
 | ||||
| **It is strongly encouraged to upgrade to a newer NodeJS version!** | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| #### axios | ||||
| @ -558,19 +641,29 @@ async function workbook_dl_axios(url) { | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| <details> | ||||
|   <summary><b>Complete Example</b> (click to show)</summary> | ||||
| :::note Tested Deployments | ||||
| 
 | ||||
| :::note Tested Environments | ||||
| This demo was tested in the following environments: | ||||
| 
 | ||||
| This demo was last tested on 2024 January 15 against Axios `1.6.5` | ||||
| | NodeJS     | Axios  | Date       | | ||||
| |:-----------|:-------|:-----------| | ||||
| | `10.24.1`  | 0.28.1 | 2024-06-21 | | ||||
| | `12.22.12` | 1.7.2  | 2024-06-21 | | ||||
| | `14.21.3`  | 1.7.2  | 2024-06-21 | | ||||
| | `16.20.2`  | 1.7.2  | 2024-06-21 | | ||||
| | `18.20.3`  | 1.7.2  | 2024-06-21 | | ||||
| | `20.15.0`  | 1.7.2  | 2024-06-21 | | ||||
| | `22.3.0`   | 1.7.2  | 2024-06-21 | | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| <details> | ||||
|   <summary><b>Complete Example</b> (click to show)</summary> | ||||
| 
 | ||||
| 1) Install the [NodeJS module](/docs/getting-started/installation/nodejs) | ||||
| 
 | ||||
| <CodeBlock language="bash">{`\ | ||||
| npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz axios@1.6.5`} | ||||
| npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz axios@1.7.2`} | ||||
| </CodeBlock> | ||||
| 
 | ||||
| 2) Save the following to `SheetJSAxios.js`: | ||||
|  | ||||
| @ -992,6 +992,7 @@ This demo was last tested in the following deployments: | ||||
| |:-------------|:--------------|:--------|:----------|:-----------| | ||||
| | `darwin-x64` | `12.6.228.13` | `3.1.3` | `22`      | 2024-06-19 | | ||||
| | `darwin-arm` | `12.6.228.13` | `3.1.3` | `11.0.23` | 2024-06-19 | | ||||
| | `win10-x64`  | `12.6.228.13` | `3.1.3` | `11.0.16` | 2024-06-21 | | ||||
| | `linux-x64`  | `12.6.228.13` | `3.1.3` | `17.0.7`  | 2024-06-20 | | ||||
| | `linux-arm`  | `12.6.228.13` | `3.1.3` | `17.0.11` | 2024-06-20 | | ||||
| 
 | ||||
| @ -1043,6 +1044,10 @@ curl -LO https://repo1.maven.org/maven2/com/caoccao/javet/javet-linux-arm64/3.1. | ||||
|   </TabItem> | ||||
|   <TabItem value="win" label="Windows"> | ||||
| 
 | ||||
| ```bash | ||||
| curl -LO https://repo1.maven.org/maven2/com/caoccao/javet/javet/3.1.3/javet-3.1.3.jar | ||||
| ``` | ||||
| 
 | ||||
|   </TabItem> | ||||
| </Tabs> | ||||
| 
 | ||||
| @ -1108,6 +1113,11 @@ java -cp ".:javet-linux-arm64-3.1.3.jar" SheetJSJavet pres.xlsx | ||||
|   </TabItem> | ||||
|   <TabItem value="win" label="Windows"> | ||||
| 
 | ||||
| ```bash | ||||
| javac -cp ".;javet-3.1.3.jar" SheetJSJavet.java | ||||
| java -cp ".;javet-3.1.3.jar" SheetJSJavet pres.xlsx | ||||
| ``` | ||||
| 
 | ||||
|   </TabItem> | ||||
| </Tabs> | ||||
| 
 | ||||
|  | ||||
| @ -178,6 +178,7 @@ This demo was tested in the following deployments: | ||||
| |:-------------|:---------|:-----------| | ||||
| | `darwin-x64` | `3.2.7`  | 2024-06-15 | | ||||
| | `darwin-arm` | `3.2.7`  | 2024-06-15 | | ||||
| | `win10-x64`  | `3.2.7`  | 2024-06-21 | | ||||
| | `linux-x64`  | `3.2.7`  | 2024-06-20 | | ||||
| | `linux-arm`  | `3.2.7`  | 2024-06-20 | | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user