forked from sheetjs/docs.sheetjs.com
		
	
		
			
	
	
		
			61 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | /* sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */ | ||
|  | var SheetJSFT = [ | ||
|  |   "xlsx", "xlsb", "xlsm", "xls", "xml", "csv", "txt", "ods", "fods", "uos", "sylk", "dif", "dbf", "prn", "qpw", "123", "wb*", "wq*", "html", "htm", "numbers" | ||
|  | ].map(function(x) { return "." + x; }).join(","); | ||
|  | 
 | ||
|  | var SJSTemplate = [ | ||
|  |   '<div>', | ||
|  |     '<input type="file" multiple="false" id="sheetjs-input" accept="' + SheetJSFT + '" @change="onchange" />', | ||
|  |     '<br/>', | ||
|  |     '<button type="button" id="export-table" style="visibility:hidden" @click="onexport">Export to XLSX</button>', | ||
|  |     '<br/>', | ||
|  |     '<div id="out-table"></div>', | ||
|  |   '</div>' | ||
|  | ].join(""); | ||
|  | var component_struct = { | ||
|  |   template: SJSTemplate, | ||
|  |   methods: { | ||
|  |     onchange: function(evt) { | ||
|  |       var files = evt.target.files; | ||
|  |       if (!files || files.length == 0) return; | ||
|  | 
 | ||
|  |       var file = files[0]; | ||
|  | 
 | ||
|  |       var reader = new FileReader(); | ||
|  |       reader.onload = function (e) { | ||
|  |         // get data
 | ||
|  |         var bytes = new Uint8Array(e.target.result); | ||
|  | 
 | ||
|  |         /* read workbook */ | ||
|  |         var wb = XLSX.read(bytes); | ||
|  | 
 | ||
|  |         /* grab first sheet */ | ||
|  |         var wsname = wb.SheetNames[0]; | ||
|  |         var ws = wb.Sheets[wsname]; | ||
|  | 
 | ||
|  |         /* generate HTML */ | ||
|  |         var HTML = XLSX.utils.sheet_to_html(ws); | ||
|  | 
 | ||
|  |         /* update table */ | ||
|  |         document.getElementById('out-table').innerHTML = HTML; | ||
|  |         /* show export button */ | ||
|  |         document.getElementById('export-table').style.visibility = "visible"; | ||
|  |       }; | ||
|  | 
 | ||
|  |       reader.readAsArrayBuffer(file); | ||
|  |     }, | ||
|  |     onexport: function(evt) { | ||
|  |       /* generate workbook object from table */ | ||
|  |       var wb = XLSX.utils.table_to_book(document.getElementById('out-table').getElementsByTagName("TABLE")[0]); | ||
|  |       /* generate file and force a download*/ | ||
|  |       XLSX.writeFile(wb, "sheetjs.xlsx"); | ||
|  |     } | ||
|  |   } | ||
|  | }; | ||
|  | if(Vue.component) { | ||
|  |   Vue.component('html-preview', component_struct); | ||
|  | } else { | ||
|  |   var app = Vue.createApp({}); | ||
|  |   app.component('html-preview', component_struct); | ||
|  | } |