35 lines
1005 B
Bash
Executable File
35 lines
1005 B
Bash
Executable File
#!/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
|