forked from sheetjs/sheetjs
		
	- frameworks: react, react-native, preact, next.js, weex, nuxt.js - deployments: nodejs server, duktape, chakra, electron, nw.js
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* xlsx.js (C) 2013-present  SheetJS -- http://sheetjs.com */
 | 
						|
 | 
						|
var fs = require('fs'), path = require('path'), URL = require('url');
 | 
						|
var express = require('express'), app = express();
 | 
						|
var sprintf = require('printj').sprintf;
 | 
						|
var logit = require('./_logit');
 | 
						|
var cors = require('./_cors');
 | 
						|
var data = "a,b,c\n1,2,3".split("\n").map(function(x) { return x.split(","); });
 | 
						|
var XLSX = require('xlsx');
 | 
						|
 | 
						|
/* helper to generate the workbook object */
 | 
						|
function make_book() {
 | 
						|
	var ws = XLSX.utils.aoa_to_sheet(data);
 | 
						|
	var wb = XLSX.utils.book_new();
 | 
						|
	XLSX.utils.book_append_sheet(wb, ws, "SheetJS");
 | 
						|
	return wb;
 | 
						|
}
 | 
						|
 | 
						|
function get_data(req, res, type) {
 | 
						|
	var wb = make_book();
 | 
						|
	/* send buffer back */
 | 
						|
	res.status(200).send(XLSX.write(wb, {type:'buffer', bookType:type}));
 | 
						|
}
 | 
						|
 | 
						|
function get_file(req, res, file) {
 | 
						|
	var wb = make_book();
 | 
						|
	/* write using XLSX.writeFile */
 | 
						|
	XLSX.writeFile(wb, file);
 | 
						|
	res.status(200).send("wrote to " + file + "\n");
 | 
						|
}
 | 
						|
 | 
						|
function load_data(file) {
 | 
						|
	var wb = XLSX.readFile(file);
 | 
						|
	/* generate array of arrays */
 | 
						|
	data = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], {header:1});
 | 
						|
	console.log(data);
 | 
						|
}
 | 
						|
 | 
						|
function post_data(req, res) {
 | 
						|
	var keys = Object.keys(req.files), k = keys[0];
 | 
						|
	load_data(req.files[k].path);
 | 
						|
	res.status(200).send("ok\n");
 | 
						|
}
 | 
						|
 | 
						|
function post_file(req, res, file) {
 | 
						|
	load_data(file);
 | 
						|
	res.status(200).send("ok\n");
 | 
						|
}
 | 
						|
app.use(logit.mw);
 | 
						|
app.use(cors.mw);
 | 
						|
app.use(require('express-formidable')());
 | 
						|
app.get('/', function(req, res, next) {
 | 
						|
	var url = URL.parse(req.url, true);
 | 
						|
	if(url.query.t) return get_data(req, res, url.query.t);
 | 
						|
	else if(url.query.f) return get_file(req, res, url.query.f);
 | 
						|
	res.status(403).end("Forbidden");
 | 
						|
});
 | 
						|
app.post('/', function(req, res, next) {
 | 
						|
	var url = URL.parse(req.url, true);
 | 
						|
	if(url.query.f) return post_file(req, res, url.query.f);
 | 
						|
	return post_data(req, res);
 | 
						|
});
 | 
						|
 | 
						|
var port = +process.argv[2] || +process.env.PORT || 7262;
 | 
						|
app.listen(port, function() { console.log('Serving HTTP on port ' + port); });
 |