運營人員須要將後臺的表格導出成Excel,因爲後端的同窗忙於其餘事情,想着是否是能夠本身作一個服務來生成。瞭解到有node-xlsx這樣的工具之後就開工了。node
後臺選用了koa,由於很是輕巧,寫個接口只須要幾行代碼。git
var app = require('koa')(); app.use(function *(){ this.body = 'Hello'; }); app.listen(3000); console.log('listening on port 3000');
訪問localhost:3000就能夠看到Hello了。github
node-xlsx是一個nodejs下讀寫Excel的工具,使用方法很簡單json
import xlsx from 'node-xlsx'; const data = [[1, 2, 3], [true, false, null, 'sheetjs'], ['foo', 'bar', new Date('2014-02-19T14:30Z'), '0.3'], ['baz', null, 'qux']]; var buffer = xlsx.build([{name: "mySheetName", data: data}]); // Returns a buffer
以後就能夠使用fs.writeFile來把buffer寫入文件。另外再搭配koa-route,koa-cors就能夠提供一個容許跨域請求的服務。後端
var route = require('koa-route'); app.use(require('koa-cors')());//enable cross-origin request app.use(route.post('/createExcel', createXls));
koa的中間件都是基於generator方法,createXls方法也不例外。跨域
var parse = require('co-body'); function *createXls() { var body = yield parse(this);//parse body to json var fileName = body.fileName; var _buffer = xlsx.build([{name: 'sheet1', data: body.data}]); fs.writeFileSync('./downloads/' + fileName + '.xlsx', _buffer); this.body = { "success": true, file: fileName }; }
這樣一個簡單的接口就寫完了,只要調用http://localhost:3000/createE...傳入fileName和data就能夠生成Excel文檔。app