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(/]*(("[^"]*"|'[^']*')[^"'>]*)*>/, ""); }}); const workbook = XLSX.utils.table_to_book(tbl); XLSX.writeFile(workbook, "SheetJSXMLDOM.xlsx"); })();