forked from sheetjs/sheetjs
		
	
		
			
	
	
		
			23 lines
		
	
	
		
			723 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			23 lines
		
	
	
		
			723 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */
							 | 
						||
| 
								 | 
							
								/* eslint-env node */
							 | 
						||
| 
								 | 
							
								// cat file.xlsx | curl --header 'content-type: application/octet-stream' --data-binary @- "http://localhost:3000/"
							 | 
						||
| 
								 | 
							
								const XLSX = require('xlsx');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const process_RS = (stream, cb) => {
							 | 
						||
| 
								 | 
							
								  var buffers = [];
							 | 
						||
| 
								 | 
							
								  stream.on('data', function(data) { buffers.push(data); });
							 | 
						||
| 
								 | 
							
								  stream.on('end', function() {
							 | 
						||
| 
								 | 
							
								    var buffer = Buffer.concat(buffers);
							 | 
						||
| 
								 | 
							
								    var workbook = XLSX.read(buffer, {type:"buffer"});
							 | 
						||
| 
								 | 
							
								    cb(workbook);
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = (hook) => {
							 | 
						||
| 
								 | 
							
									process_RS(hook.req, (wb) => {
							 | 
						||
| 
								 | 
							
										hook.res.writeHead(200, { 'Content-Type': 'text/csv' });
							 | 
						||
| 
								 | 
							
										const stream = XLSX.stream.to_csv(wb.Sheets[wb.SheetNames[0]]);
							 | 
						||
| 
								 | 
							
										stream.pipe(hook.res);
							 | 
						||
| 
								 | 
							
									});
							 | 
						||
| 
								 | 
							
								};
							 |