20 lines
878 B
JavaScript
20 lines
878 B
JavaScript
|
const XLSX = require("xlsx");
|
||
|
const { DOMParser, XMLSerializer } = require("@xmldom/xmldom");
|
||
|
|
||
|
(async() => {
|
||
|
const text = await (await fetch('https://docs.sheetjs.com/dom/SheetJSTable.html')).text();
|
||
|
const doc = new DOMParser().parseFromString( text, "text/html");
|
||
|
const tbl = doc.getElementsByTagName("table")[0];
|
||
|
|
||
|
/* patch XMLDOM */
|
||
|
tbl.rows = Array.from(tbl.getElementsByTagName("tr"));
|
||
|
tbl.rows.forEach(row => row.cells = Array.from(row.getElementsByTagName("td")));
|
||
|
Object.defineProperty(tbl.__proto__, "innerHTML", { get: function() {
|
||
|
var outerHTML = new XMLSerializer().serializeToString(this);
|
||
|
if(outerHTML.match(/</g).length == 1) return "";
|
||
|
return outerHTML.slice(0, outerHTML.lastIndexOf("</")).replace(/<[^"'>]*(("[^"]*"|'[^']*')[^"'>]*)*>/, "");
|
||
|
}});
|
||
|
|
||
|
const workbook = XLSX.utils.table_to_book(tbl);
|
||
|
XLSX.writeFile(workbook, "SheetJSXMLDOM.xlsx");
|
||
|
})();
|