forked from sheetjs/docs.sheetjs.com
		
	
		
			
	
	
		
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
|  | #!/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 |