forked from sheetjs/docs.sheetjs.com
		
	Synthetic DOM demo refresh
This commit is contained in:
		
							parent
							
								
									066741f185
								
							
						
					
					
						commit
						c4d9ba0948
					
				| @ -131,14 +131,14 @@ const puppeteer = require('puppeteer'); | ||||
| 
 | ||||
| :::note Tested Deployments | ||||
| 
 | ||||
| This demo was last tested on 2024 January 27 against Puppeteer 21.9.0. | ||||
| This demo was last tested on 2024 June 24 against Puppeteer 22.12.0. | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| 1) Install SheetJS and Puppeteer: | ||||
| 
 | ||||
| <CodeBlock language="bash">{`\ | ||||
| npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz puppeteer@21.9.0`} | ||||
| npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz puppeteer@22.12.0`} | ||||
| </CodeBlock> | ||||
| 
 | ||||
| 2) Save the `SheetJSPuppeteer.js` code snippet to `SheetJSPuppeteer.js`. | ||||
| @ -206,7 +206,7 @@ await browser.close();`} | ||||
| 
 | ||||
| :::note Tested Deployments | ||||
| 
 | ||||
| This demo was last tested on 2024 January 27 against deno-puppeteer 16.2.0. | ||||
| This demo was last tested on 2024 June 24 against deno-puppeteer 16.2.0. | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| @ -294,14 +294,14 @@ const { webkit } = require('playwright'); // import desired browser | ||||
| 
 | ||||
| :::note Tested Deployments | ||||
| 
 | ||||
| This demo was last tested on 2024 January 27 against Playwright 1.41.1. | ||||
| This demo was last tested on 2024 June 24 against Playwright 1.45.0. | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| 1) Install SheetJS and Playwright: | ||||
| 
 | ||||
| <CodeBlock language="bash">{`\ | ||||
| npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz playwright@1.41.1`} | ||||
| npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz playwright@1.45.0`} | ||||
| </CodeBlock> | ||||
| 
 | ||||
| 2) Save the `SheetJSPlaywright.js` code snippet to `SheetJSPlaywright.js`. | ||||
|  | ||||
| @ -107,15 +107,33 @@ const workbook = XLSX.utils.table_to_book(doc); | ||||
| XLSX.writeFile(workbook, "SheetJSDOM.xlsx"); | ||||
| ``` | ||||
| 
 | ||||
| <details> | ||||
|   <summary><b>Complete Demo</b> (click to show)</summary> | ||||
| 
 | ||||
| :::note Tested Deployments | ||||
| 
 | ||||
| This demo was last tested on 2024 January 27 against JSDOM `24.0.0` | ||||
| This demo was tested in the following deployments: | ||||
| 
 | ||||
| | JSDOM   | Date       | | ||||
| |:--------|:-----------| | ||||
| | 24.1.0  | 2024-06-24 | | ||||
| | 23.2.0  | 2024-06-24 | | ||||
| | 22.1.0  | 2024-06-24 | | ||||
| | 21.1.2  | 2024-06-24 | | ||||
| | 20.0.3  | 2024-06-24 | | ||||
| | 19.0.0  | 2024-06-24 | | ||||
| | 18.1.1  | 2024-06-24 | | ||||
| | 17.0.0  | 2024-06-24 | | ||||
| | 16.7.0  | 2024-06-24 | | ||||
| | 15.2.1  | 2024-06-24 | | ||||
| | 14.1.0  | 2024-06-24 | | ||||
| | 13.2.0  | 2024-06-24 | | ||||
| | 12.2.0  | 2024-06-24 | | ||||
| | 11.12.0 | 2024-06-24 | | ||||
| | 10.1.0  | 2024-06-24 | | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| <details> | ||||
|   <summary><b>Complete Demo</b> (click to show)</summary> | ||||
| 
 | ||||
| 1) Install SheetJS and JSDOM libraries: | ||||
| 
 | ||||
| <CodeBlock language="bash">{`\ | ||||
| @ -148,15 +166,31 @@ the following patches were needed: | ||||
| - TABLE `rows` property (explained above) | ||||
| - TR `cells` property (explained above) | ||||
| 
 | ||||
| <details> | ||||
|   <summary><b>Complete Demo</b> (click to show)</summary> | ||||
| 
 | ||||
| :::note Tested Deployments | ||||
| 
 | ||||
| This demo was last tested on 2024 January 27 against HappyDOM `13.3.1` | ||||
| This demo was tested in the following deployments: | ||||
| 
 | ||||
| | HappyDOM | Date       | | ||||
| |:---------|:-----------| | ||||
| | 14.12.3  | 2024-06-24 | | ||||
| | 13.10.1  | 2024-06-24 | | ||||
| | 12.10.3  | 2024-06-24 | | ||||
| | 11.2.0   | 2024-06-24 | | ||||
| | 10.11.2  | 2024-06-24 | | ||||
| | 9.20.3   | 2024-06-24 | | ||||
| | 8.9.0    | 2024-06-24 | | ||||
| | 7.8.1    | 2024-06-24 | | ||||
| | 6.0.4    | 2024-06-24 | | ||||
| | 5.4.0    | 2024-06-24 | | ||||
| | 4.1.0    | 2024-06-24 | | ||||
| | 3.2.2    | 2024-06-24 | | ||||
| | 2.55.0   | 2024-06-24 | | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| <details> | ||||
|   <summary><b>Complete Demo</b> (click to show)</summary> | ||||
| 
 | ||||
| 1) Install SheetJS and HappyDOM libraries: | ||||
| 
 | ||||
| <CodeBlock language="bash">{`\ | ||||
|  | ||||
| @ -324,7 +324,7 @@ Swift on MacOS supports JavaScriptCore without additional dependencies. | ||||
| **Compiled** | ||||
| 
 | ||||
| The ["Swift C"](#swift-c) section starts from the static libraries built in the | ||||
| ["C++"](#c) section and build Swift bindings. | ||||
| ["C++"](#c) section and builds Swift bindings. | ||||
| 
 | ||||
| | Architecture | Version          | Date       | | ||||
| |:-------------|:-----------------|:-----------| | ||||
|  | ||||
| @ -105,21 +105,21 @@ This demo was tested in the following deployments: | ||||
| 
 | ||||
| | OpenJDK | Nashorn         | Date       | | ||||
| |:--------|:----------------|:-----------| | ||||
| | 22      | 15.4 standalone | 2024-03-23 | | ||||
| | 21.0.3  | 15.4 standalone | 2024-05-24 | | ||||
| | 20.0.2  | 15.4 standalone | 2024-03-23 | | ||||
| | 19.0.2  | 15.4 standalone | 2024-03-23 | | ||||
| | 18.0.2  | 15.4 standalone | 2024-03-23 | | ||||
| | 17.0.10 | 15.4 standalone | 2024-03-25 | | ||||
| | 16.0.1  | 15.4 standalone | 2024-03-23 | | ||||
| | 15.0.10 | 15.4 standalone | 2024-03-23 | | ||||
| | 14.0.2  | Built-in        | 2024-03-23 | | ||||
| | 13.0.14 | Built-in        | 2024-03-23 | | ||||
| | 12.0.2  | Built-in        | 2024-03-23 | | ||||
| | 11.0.20 | Built-in        | 2024-03-23 | | ||||
| | 10.0.2  | Built-in        | 2024-03-23 | | ||||
| | 9       | Built-in        | 2024-03-23 | | ||||
| | 1.8.0   | Built-in        | 2024-03-23 | | ||||
| | 22.0.1  | 15.4 standalone | 2024-06-24 | | ||||
| | 21.0.3  | 15.4 standalone | 2024-06-24 | | ||||
| | 20.0.2  | 15.4 standalone | 2024-06-24 | | ||||
| | 19.0.2  | 15.4 standalone | 2024-06-24 | | ||||
| | 18.0.2  | 15.4 standalone | 2024-06-24 | | ||||
| | 17.0.11 | 15.4 standalone | 2024-06-24 | | ||||
| | 16.0.1  | 15.4 standalone | 2024-06-24 | | ||||
| | 15.0.10 | 15.4 standalone | 2024-06-24 | | ||||
| | 14.0.2  | Built-in        | 2024-06-24 | | ||||
| | 13.0.14 | Built-in        | 2024-06-24 | | ||||
| | 12.0.2  | Built-in        | 2024-06-24 | | ||||
| | 11.0.23 | Built-in        | 2024-06-24 | | ||||
| | 10.0.2  | Built-in        | 2024-06-24 | | ||||
| | 9       | Built-in        | 2024-06-24 | | ||||
| | 1.8.0   | Built-in        | 2024-06-24 | | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
|  | ||||
| @ -32,4 +32,3 @@ bun run sheet2csv.ts pres.numbers | ||||
| 
 | ||||
| bun build ./sheet2csv.ts --compile --outfile sheet2csv | ||||
| ./sheet2csv pres.numbers | ||||
| 
 | ||||
|  | ||||
| @ -13,4 +13,3 @@ deno run -r --allow-read https://docs.sheetjs.com/cli/sheet2csv.ts pres.numbers | ||||
| 
 | ||||
| deno compile -r --allow-read https://docs.sheetjs.com/cli/sheet2csv.ts | ||||
| ./sheet2csv pres.numbers | ||||
| 
 | ||||
|  | ||||
| @ -61,5 +61,3 @@ codesign -s - ./sheet2csv | ||||
| ./sheet2csv pres.numbers | ||||
| 
 | ||||
| codesign -dv ./sheet2csv | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -17,4 +17,4 @@ npx pkg xlsx-cli.js | ||||
| 
 | ||||
| ## NOTE: these steps are for darwin-x64 | ||||
| 
 | ||||
| ./xlsx-cli-macos pres.numbers | ||||
| ./xlsx-cli-macos pres.numbers | ||||
|  | ||||
							
								
								
									
										20
									
								
								tests/dom-happydom.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										20
									
								
								tests/dom-happydom.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,20 @@ | ||||
| #!/bin/bash | ||||
| # https://docs.sheetjs.com/docs/demos/net/dom#happydom | ||||
| 
 | ||||
| cd /tmp | ||||
| rm -rf sheetjs-happydom | ||||
| mkdir sheetjs-happydom | ||||
| cd sheetjs-happydom | ||||
| 
 | ||||
| npm i --save https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz | ||||
| 
 | ||||
| curl -LO https://docs.sheetjs.com/dom/SheetJSHappyDOM.js | ||||
| curl -LO https://docs.sheetjs.com/dom/SheetJSTable.html | ||||
| 
 | ||||
| for n in {2..14}; do | ||||
|   rm -f SheetJSHappyDOM.xlsx | ||||
|   npm i --save happy-dom@$n | ||||
|   npm ls | grep happy-dom | ||||
|   node SheetJSHappyDOM.js | ||||
|   npx -y xlsx-cli SheetJSHappyDOM.xlsx | head -n 3 | ||||
| done | ||||
							
								
								
									
										36
									
								
								tests/dom-jsdom.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										36
									
								
								tests/dom-jsdom.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,36 @@ | ||||
| #!/bin/bash | ||||
| # https://docs.sheetjs.com/docs/demos/net/dom#jsdom | ||||
| 
 | ||||
| cd /tmp | ||||
| rm -rf sheetjs-jsdom | ||||
| mkdir sheetjs-jsdom | ||||
| cd sheetjs-jsdom | ||||
| 
 | ||||
| npm i --save https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz | ||||
| 
 | ||||
| cat >SheetJSDOM.js <<EOF | ||||
| const XLSX = require("xlsx"); | ||||
| const { readFileSync } = require("fs"); | ||||
| const { JSDOM } = require("jsdom"); | ||||
| 
 | ||||
| /* obtain HTML string.  This example reads from SheetJSTable.html */ | ||||
| const html_str = readFileSync("SheetJSTable.html", "utf8"); | ||||
| 
 | ||||
| /* get first TABLE element */ | ||||
| const doc = new JSDOM(html_str).window.document.querySelector("table"); | ||||
| 
 | ||||
| /* generate workbook */ | ||||
| const workbook = XLSX.utils.table_to_book(doc); | ||||
| 
 | ||||
| XLSX.writeFile(workbook, "SheetJSDOM.xlsx"); | ||||
| EOF | ||||
| 
 | ||||
| curl -LO https://docs.sheetjs.com/dom/SheetJSTable.html | ||||
| 
 | ||||
| for n in {10..24}; do | ||||
|   rm -f SheetJSDom.xlsx | ||||
|   npm i --save jsdom@$n | ||||
|   npm ls | grep jsdom | ||||
|   node SheetJSDom.js | ||||
|   npx -y xlsx-cli SheetJSDom.xlsx | head -n 3 | ||||
| done | ||||
| @ -14,4 +14,4 @@ curl -LO https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js | ||||
| curl -LO https://sheetjs.com/pres.xlsx | ||||
| 
 | ||||
| curl -L -o src/main.rs https://docs.sheetjs.com/boa/main.rs | ||||
| cargo run --release; echo $? | ||||
| cargo run --release; echo $? | ||||
|  | ||||
| @ -10,4 +10,4 @@ curl -LO https://sheetjs.com/pres.numbers | ||||
| 
 | ||||
| curl -LO https://docs.sheetjs.com/execjs/ExecSheetJS.rb | ||||
| 
 | ||||
| ruby ExecSheetJS.rb pres.numbers; echo $? | ||||
| ruby ExecSheetJS.rb pres.numbers; echo $? | ||||
|  | ||||
| @ -35,4 +35,4 @@ for n in {17..22}; do | ||||
|   cd sheethorn | ||||
|   java -cp ".:js-scriptengine-24.0.1.jar:js-language-24.0.1.jar:polyglot-24.0.1.jar:collections-24.0.1.jar:truffle-api-24.0.1.jar:nativeimage-24.0.1.jar:icu4j-24.0.1.jar:regex-24.0.1.jar:SheetJSNashorn.jar" -Dpolyglot.js.nashorn-compat=true  SheetJSNashorn pres.xlsx | ||||
|   cd - | ||||
| done | ||||
| done | ||||
|  | ||||
| @ -34,4 +34,4 @@ console.log(XLSX.utils.sheet_to_csv(wb.Sheets[wb.SheetNames[0]])); | ||||
| EOF | ||||
| 
 | ||||
| cat global.js xlsx.full.min.js payload.js jerry.js > xlsx.jerry.js | ||||
| jerryscript/build/bin/jerry xlsx.jerry.js; echo $? | ||||
| jerryscript/build/bin/jerry xlsx.jerry.js; echo $? | ||||
|  | ||||
| @ -19,7 +19,9 @@ curl -L -o asm-util-9.5.jar "https://search.maven.org/remotecontent?filepath=org | ||||
| 
 | ||||
| # Standalone Nashorn | ||||
| for n in {15..22}; do | ||||
| 	echo $n | ||||
|   export JAVA_HOME=`/usr/libexec/java_home -v $n` | ||||
| 	echo $JAVA_HOME | ||||
|   java -version | ||||
|   rm -fr SheetJSNashorn.class SheetJSNashorn.jar sheethorn | ||||
|   javac SheetJSNashorn.java | ||||
| @ -46,4 +48,3 @@ for n in 1.8 {9..14}; do | ||||
|   java -cp .:SheetJSNashorn.jar SheetJSNashorn pres.xlsx | ||||
|   cd - | ||||
| done | ||||
| 
 | ||||
|  | ||||
| @ -51,4 +51,4 @@ for n in 1.8 {9..22}; do | ||||
|   jar -cf SheetJS.jar SheetJSRhino.class com/sheetjs/*.class xlsx.full.min.js | ||||
| 
 | ||||
|   java -cp ".:SheetJS.jar:rhino.jar" SheetJSRhino pres.xlsx | ||||
| done | ||||
| done | ||||
|  | ||||
							
								
								
									
										46
									
								
								tests/headless-playwright.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										46
									
								
								tests/headless-playwright.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,46 @@ | ||||
| #!/bin/bash | ||||
| # https://docs.sheetjs.com/docs/demos/net/headless#playwright | ||||
| 
 | ||||
| cd /tmp | ||||
| rm -rf sheetjs-playwright | ||||
| mkdir sheetjs-playwright | ||||
| cd sheetjs-playwright | ||||
| 
 | ||||
| npm i --save https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz playwright@1.45.0 | ||||
| 
 | ||||
| cat >SheetJSPlaywright.js <<EOF | ||||
| const fs = require("fs"); | ||||
| const { webkit } = require('playwright'); // import desired browser | ||||
| (async () => { | ||||
|   /* (1) Load the target page */ | ||||
|   const browser = await webkit.launch(); // launch desired browser | ||||
|   const page = await browser.newPage(); | ||||
|   page.on("console", msg => console.log("PAGE LOG:", msg.text())); | ||||
|   await page.setViewportSize({width: 1920, height: 1080}); // different name :( | ||||
|   await page.goto('https://sheetjs.com/demos/table'); | ||||
| 
 | ||||
|   /* (2) Load the standalone SheetJS build from the CDN */ | ||||
|   await page.addScriptTag({ url: 'https://cdn.sheetjs.com/xlsx-0.20.2/package/dist/xlsx.full.min.js' }); | ||||
| 
 | ||||
|   /* (3) Run the snippet in browser and return data */ | ||||
|   const bin = await page.evaluate(() => { | ||||
|     /* find first table */ | ||||
|     var table = document.body.getElementsByTagName('table')[0]; | ||||
| 
 | ||||
|     /* call table_to_book on first table */ | ||||
|     var wb = XLSX.utils.table_to_book(table); | ||||
| 
 | ||||
|     /* generate XLSB and return binary string */ | ||||
|     return XLSX.write(wb, {type: "binary", bookType: "xlsb"}); | ||||
|   }); | ||||
| 
 | ||||
|   /* (4) write data to file */ | ||||
|   fs.writeFileSync("SheetJSPlaywright.xlsb", bin, { encoding: "binary" }); | ||||
| 
 | ||||
|   await browser.close(); | ||||
| })(); | ||||
| EOF | ||||
| 
 | ||||
| node SheetJSPlaywright.js | ||||
| npx -y playwright@1.45.0 install | ||||
| npx -y xlsx-cli SheetJSPlaywright.xlsb | ||||
							
								
								
									
										44
									
								
								tests/headless-puppeteer-deno.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										44
									
								
								tests/headless-puppeteer-deno.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,44 @@ | ||||
| #!/bin/bash | ||||
| # https://docs.sheetjs.com/docs/demos/net/headless#puppeteer | ||||
| 
 | ||||
| cd /tmp | ||||
| rm -rf sheetjs-puppeteer-deno | ||||
| mkdir sheetjs-puppeteer-deno | ||||
| cd sheetjs-puppeteer-deno | ||||
| 
 | ||||
| env PUPPETEER_PRODUCT=chrome deno run -A --unstable https://deno.land/x/puppeteer@16.2.0/install.ts | ||||
| 
 | ||||
| cat >SheetJSPuppeteer.ts <<EOF | ||||
| import puppeteer from "https://deno.land/x/puppeteer@16.2.0/mod.ts"; | ||||
| import { decode } from "https://deno.land/std/encoding/base64.ts" | ||||
| 
 | ||||
| /* (1) Load the target page */ | ||||
| const browser = await puppeteer.launch(); | ||||
| const page = await browser.newPage(); | ||||
| page.on("console", msg => console.log("PAGE LOG:", msg.text())); | ||||
| await page.setViewport({width: 1920, height: 1080}); | ||||
| await page.goto('https://sheetjs.com/demos/table'); | ||||
| 
 | ||||
| /* (2) Load the standalone SheetJS build from the CDN */ | ||||
| await page.addScriptTag({ url: 'https://cdn.sheetjs.com/xlsx-0.20.2/package/dist/xlsx.full.min.js' }); | ||||
| 
 | ||||
| /* (3) Run the snippet in browser and return data */ | ||||
| const b64 = await page.evaluate(() => { | ||||
| 
 | ||||
|   /* find first table */ | ||||
|   var table = document.body.getElementsByTagName('table')[0]; | ||||
| 
 | ||||
|   /* call table_to_book on first table */ | ||||
|   var wb = XLSX.utils.table_to_book(table); | ||||
| 
 | ||||
|   /* generate XLSB and return binary string */ | ||||
|   return XLSX.write(wb, {type: "base64", bookType: "xlsb"}); | ||||
| }); | ||||
| /* (4) write data to file */ | ||||
| Deno.writeFileSync("SheetJSPuppeteer.xlsb", decode(b64)); | ||||
| 
 | ||||
| await browser.close(); | ||||
| EOF | ||||
| 
 | ||||
| deno run -A --unstable SheetJSPuppeteer.ts | ||||
| npx -y xlsx-cli SheetJSPuppeteer.xlsb | ||||
							
								
								
									
										47
									
								
								tests/headless-puppeteer.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										47
									
								
								tests/headless-puppeteer.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,47 @@ | ||||
| #!/bin/bash | ||||
| # https://docs.sheetjs.com/docs/demos/net/headless#puppeteer | ||||
| 
 | ||||
| cd /tmp | ||||
| rm -rf sheetjs-puppeteer | ||||
| mkdir sheetjs-puppeteer | ||||
| cd sheetjs-puppeteer | ||||
| 
 | ||||
| npm i --save https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz puppeteer@22.12.0 | ||||
| 
 | ||||
| cat >SheetJSPuppeteer.js <<EOF | ||||
| const fs = require("fs"); | ||||
| const puppeteer = require('puppeteer'); | ||||
| 
 | ||||
| (async () => { | ||||
|   /* (1) Load the target page */ | ||||
|   const browser = await puppeteer.launch(); | ||||
|   const page = await browser.newPage(); | ||||
|   page.on("console", msg => console.log("PAGE LOG:", msg.text())); | ||||
|   await page.setViewport({width: 1920, height: 1080}); | ||||
|   await page.goto('https://sheetjs.com/demos/table'); | ||||
| 
 | ||||
|   /* (2) Load the standalone SheetJS build from the CDN */ | ||||
|   await page.addScriptTag({ url: 'https://cdn.sheetjs.com/xlsx-0.20.2/package/dist/xlsx.full.min.js' }); | ||||
| 
 | ||||
|   /* (3) Run the snippet in browser and return data */ | ||||
|   const bin = await page.evaluate(() => { | ||||
| 
 | ||||
|     /* find first table */ | ||||
|     var table = document.body.getElementsByTagName('table')[0]; | ||||
| 
 | ||||
|     /* call table_to_book on first table */ | ||||
|     var wb = XLSX.utils.table_to_book(table); | ||||
| 
 | ||||
|     /* generate XLSB and return binary string */ | ||||
|     return XLSX.write(wb, {type: "binary", bookType: "xlsb"}); | ||||
|   }); | ||||
| 
 | ||||
|   /* (4) write data to file */ | ||||
|   fs.writeFileSync("SheetJSPuppeteer.xlsb", bin, { encoding: "binary" }); | ||||
| 
 | ||||
|   await browser.close(); | ||||
| })(); | ||||
| EOF | ||||
| 
 | ||||
| node SheetJSPuppeteer.js | ||||
| npx -y xlsx-cli SheetJSPuppeteer.xlsb | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user