forked from sheetjs/docs.sheetjs.com
		
	
		
			
	
	
		
			111 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
		
		
			
		
	
	
			111 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
|  | <!DOCTYPE html> | ||
|  | <!-- sheetjs (C) 2013-present  SheetJS http://sheetjs.com --> | ||
|  | <!-- vim: set ts=2: --> | ||
|  | <html> | ||
|  | <head> | ||
|  | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | ||
|  | <title>SheetJS NW.js Demo</title> | ||
|  | <style> | ||
|  | #drop{ | ||
|  |   border:2px dashed #bbb; | ||
|  |   -moz-border-radius:5px; | ||
|  |   -webkit-border-radius:5px; | ||
|  |   border-radius:5px; | ||
|  |   padding:25px; | ||
|  |   text-align:center; | ||
|  |   font:20pt bold,"Vollkorn";color:#bbb | ||
|  | } | ||
|  | a { text-decoration: none } | ||
|  | </style> | ||
|  | </head> | ||
|  | <body> | ||
|  | <pre> | ||
|  | <b><a href="https://sheetjs.com">SheetJS NW.js Demo</a></b> | ||
|  | <br /> | ||
|  | <div id="drop">Drop a spreadsheet file here to see sheet data</div> | ||
|  | <input type="file" name="xlfile" id="xlf" /> ... or click here to select a file | ||
|  | 
 | ||
|  | </pre> | ||
|  | <p><input type="submit" value="Export Data!" id="xport" onclick="export_xlsx();" disabled="true"></p> | ||
|  | <div id="htmlout"></div> | ||
|  | <br /> | ||
|  | <script src="https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js"></script> | ||
|  | <script> | ||
|  | var fs = require('fs'); | ||
|  | 
 | ||
|  | var process_wb = (function() { | ||
|  |   var HTMLOUT = document.getElementById('htmlout'); | ||
|  |   var XPORT = document.getElementById('xport'); | ||
|  | 
 | ||
|  |   return function process_wb(wb) { | ||
|  |     XPORT.disabled = false; | ||
|  |     HTMLOUT.innerHTML = ""; | ||
|  |     wb.SheetNames.forEach(function(sheetName) { | ||
|  |       var htmlstr = XLSX.utils.sheet_to_html(wb.Sheets[sheetName],{editable:true}); | ||
|  |       HTMLOUT.innerHTML += htmlstr; | ||
|  |     }); | ||
|  |   }; | ||
|  | })(); | ||
|  | 
 | ||
|  | var _gaq = _gaq || []; | ||
|  | _gaq.push(['_setAccount', 'UA-36810333-1']); | ||
|  | _gaq.push(['_trackPageview']); | ||
|  | 
 | ||
|  | (function() { | ||
|  |   var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; | ||
|  |   ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; | ||
|  |   var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); | ||
|  | })(); | ||
|  | 
 | ||
|  | async function do_file(files) { | ||
|  |   var file = files[0]; | ||
|  |   var data = await file.arrayBuffer(); | ||
|  |   process_wb(XLSX.read(data)); | ||
|  | } | ||
|  | 
 | ||
|  | var drop = document.getElementById('drop'); | ||
|  | 
 | ||
|  | function handleDrop(e) { | ||
|  |   e.stopPropagation(); | ||
|  |   e.preventDefault(); | ||
|  |   do_file(e.dataTransfer.files); | ||
|  | } | ||
|  | 
 | ||
|  | function handleDragover(e) { | ||
|  |   e.stopPropagation(); | ||
|  |   e.preventDefault(); | ||
|  |   e.dataTransfer.dropEffect = 'copy'; | ||
|  | } | ||
|  | 
 | ||
|  | drop.addEventListener('dragenter', handleDragover, false); | ||
|  | drop.addEventListener('dragover', handleDragover, false); | ||
|  | drop.addEventListener('drop', handleDrop, false); | ||
|  | 
 | ||
|  | var xlf = document.getElementById('xlf'); | ||
|  | function handleFile(e) { do_file(e.target.files); } | ||
|  | xlf.addEventListener('change', handleFile, false); | ||
|  | 
 | ||
|  | var export_xlsx = (function() { | ||
|  |   var HTMLOUT = document.getElementById('htmlout'); | ||
|  |   var input = document.createElement('input'); | ||
|  |   input.style.display = 'none'; | ||
|  |   input.setAttribute('nwsaveas', 'SheetJSNWDemo.xlsx'); | ||
|  |   input.setAttribute('type', 'file'); | ||
|  |   document.body.appendChild(input); | ||
|  |   input.addEventListener('cancel',function(){ alert("Save was canceled!"); }); | ||
|  |   input.addEventListener('change',function(e){ | ||
|  |     var filename=this.value, bookType=(filename.match(/[^\.]*$/)||["xlsx"])[0]; | ||
|  |     var wb = XLSX.utils.table_to_book(HTMLOUT.getElementsByTagName("TABLE")[0]); | ||
|  |     var wbout = XLSX.write(wb, {type:'buffer', bookType:bookType}); | ||
|  |     fs.writeFile(filename, wbout, function(err) { | ||
|  |       if(!err) return alert("Saved to " + filename); | ||
|  |       alert("Error: " + (err.message || err)); | ||
|  |     }); | ||
|  |   }); | ||
|  | 
 | ||
|  |   return function() { input.click(); }; | ||
|  | })(); | ||
|  | </script> | ||
|  | </body> | ||
|  | </html> |