forked from sheetjs/sheetjs
		
	
		
			
	
	
		
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | import { Template } from 'meteor/templating'; | ||
|  | import { ReactiveVar } from 'meteor/reactive-var'; | ||
|  | 
 | ||
|  | import './main.html'; | ||
|  | 
 | ||
|  | const XLSX = require('xlsx'); | ||
|  | 
 | ||
|  | Template.read.events({ | ||
|  | 	'change input' (evt, instance) { | ||
|  | 		/* "Browser file upload form element" from SheetJS README */ | ||
|  | 		const file = evt.currentTarget.files[0]; | ||
|  | 		const reader = new FileReader(); | ||
|  | 		reader.onload = function(e) { | ||
|  | 			const data = e.target.result; | ||
|  | 			const name = file.name; | ||
|  | 			/* Meteor magic */ | ||
|  | 			Meteor.call('upload', data, name, function(err, wb) { | ||
|  | 				if(err) console.error(err); | ||
|  | 				else { | ||
|  | 					/* do something here -- this just dumps an array of arrays to console */ | ||
|  | 					console.log(XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], {header:1})); | ||
|  | 					document.getElementById('out').innerHTML = (XLSX.utils.sheet_to_html(wb.Sheets[wb.SheetNames[0]])); | ||
|  | 				} | ||
|  | 			}); | ||
|  | 		}; | ||
|  | 		reader.readAsBinaryString(file); | ||
|  | 	}, | ||
|  | }); | ||
|  | 
 | ||
|  | Template.write.events({ | ||
|  | 	'click button' (evt, instance) { | ||
|  | 		Meteor.call('download', function(err, wb) { | ||
|  | 			if(err) console.error(err); | ||
|  | 			else { | ||
|  | 				console.log(wb); | ||
|  | 				/* "Browser download file" from SheetJS README */ | ||
|  | 				var wopts = { bookType:'xlsx', bookSST:false, type:'binary' }; | ||
|  | 				var wbout = XLSX.write(wb, wopts); | ||
|  | 				saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), "meteor.xlsx"); | ||
|  | 			} | ||
|  | 		}); | ||
|  | 	}, | ||
|  | }); | ||
|  | 
 | ||
|  | function s2ab(s) { | ||
|  | 	var buf = new ArrayBuffer(s.length); | ||
|  | 	var view = new Uint8Array(buf); | ||
|  | 	for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; | ||
|  | 	return buf; | ||
|  | } |