forked from sheetjs/docs.sheetjs.com
		
	
		
			
	
	
		
			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"); | ||
|  | })(); |