#!/bin/bash # https://docs.sheetjs.com/docs/demos/net/dom#denodom set -e cd /tmp rm -rf sheetjs-denodom mkdir -p sheetjs-denodom cd sheetjs-denodom # Create the TypeScript file cat > SheetJSDenoDOM.ts << 'EOF' // @deno-types="https://cdn.sheetjs.com/xlsx-0.20.3/package/types/index.d.ts" import * as XLSX from 'https://cdn.sheetjs.com/xlsx-0.20.3/package/xlsx.mjs'; import { DOMParser } from 'https://deno.land/x/deno_dom@v0.1.48/deno-dom-wasm.ts'; const doc = new DOMParser().parseFromString( await (await fetch('https://docs.sheetjs.com/dom/SheetJSTable.html')).text(), "text/html", )!; const tbl = doc.querySelector("table"); /* patch DenoDOM element */ tbl.rows = tbl.querySelectorAll("tr"); tbl.rows.forEach(row => row.cells = row.querySelectorAll("td, th")) /* generate workbook */ const workbook = XLSX.utils.table_to_book(tbl); XLSX.writeFile(workbook, "SheetJSDenoDOM.xlsx"); EOF deno run --allow-net --allow-write --allow-import SheetJSDenoDOM.ts npx -y xlsx-cli SheetJSDenoDOM.xlsx