docs.sheetjs.com/tests/dom/denodom.sh

35 lines
1005 B
Bash
Raw Normal View History

2026-03-09 04:32:12 +00:00
#!/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