很常见的需求:将后台动态请求获取的数据,导出为excel格式文件,在浏览器端供用户下载:
经过不停的踩坑,基本上实现了功能,代码如下:
值得一提的是,koa在this.body这块输出二进制文件卡壳了;参考了之前koa文件下载的代码;采用中间方法,将生成的数据写入到excel文件,然后读出文件,最后将读出的结果输出到this.body成功实现:另一个更好的办法就是直接将处理的原始数据,转成二进制输出到body,查了资料后通过Buffer实现了。
入口文件 server.js
var koa =require('koa');
var app = koa();
var koa_router =require('koa-router');
var router = koa_router();
var serve = require('koa-static');
//加载以控制器为主的集中路由
var indexRoute=require('./route/index')(router);
app.use(indexRoute.routes());
//自定义404错误页中间件,两种方式
app.use(function*(next){
if(this.status){
if(404==this.status){
console.log('find some error');
this.status=404;
this.body ='sorry!some problems may happened,we will solve it as soon as possible!';
return;
}
yield next;
}
});
//处理程序异常错误
app.on('error', function(err){
console.log('%s errors',err.message);
});
//服务器端口监听
app.listen(3000,function(){
console.log('serv

本文档介绍如何在Koa框架中处理动态请求数据,并将其导出为Excel格式供用户下载。在实现过程中,由于Koa在直接输出二进制文件时遇到问题,采取了创建临时Excel文件,然后读取并输出到`this.body`的解决方案。另一种方法是将处理后的原始数据转换为二进制并通过Buffer直接写入`this.body`。主要涉及的代码位于入口文件`server.js`和路由文件`route/index.js`的核心部分。
最低0.47元/天 解锁文章
3万+





