基於koajs的一個簡易Excel生成服務

原由

運營人員須要將後臺的表格導出成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

源碼

https://github.com/graysheeep...cors

相關文章
相關標籤/搜索