基于koajs的一个简易Excel生成服务

起因

运营人员需要将后台的表格导出成Excel,由于后端的同学忙于其他事情,想着是不是可以自己做一个服务来生成。了解到有node-xlsx这样的工具以后就开工了。

框架

后台选用了koa,因为非常轻巧,写个接口只需要几行代码。

var app = require('koa')();
app.use(function *(){
    this.body = 'Hello';
});

app.listen(3000);
console.log('listening on port 3000');

访问localhost:3000就可以看到Hello了。

node-xlsx是一个nodejs下读写Excel的工具,使用方法很简单

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文档。

源码

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值