Excel文件导入导出(基于Nodejs、exceljs)
Excel导入、导出是大多数项目的管理后台必备功能。几年来使用过多个该功能的实现包,最近一次开发该功能,突然发现一个人气极高(3000+)的包,这里记录一下使用方法。
大凡厉害的技术的文档咋一看都想字典一样,让人懵逼。exceljs这个包也貌似不易入手,但实际上,还是很简单易用的。
导出
// controller.js
const workbook = new Excel.Workbook();
const worksheet = workbook.addWorksheet();
worksheet.columns = excelInfo.balanceFlow.columns;
worksheet.addRows(result.rows);
ctx.response.attachment(excelInfo.balanceFlow.filename);
ctx.status = 200;
await workbook.xlsx.write(ctx.res);
ctx.res.end();
同上文代码,引入包、创建工作簿(同创建excel文件)、创建工作页(同Excel的sheet1编辑)、写表头、写表格数据、最后输出文件流,就这么简单几步就完成了Excel文件的导出。其中,addRows()方法的传参,是传最常规的列表数据结构,形如[{},{},{}...]。
这里简单啰嗦一下,所谓本文的Excel文件导出,实际是服务端从数据库获取数据,并用获取到的数据生成Excel文件的过程 。
Excel表头配置文件如下:
module.exports = {
userList: {
filename: '用户列表.xlsx',
columns: [
{header: '用户ID', key: 'id', width: },
{header: '用户账号', key: 'username', width: },
{header: '用户姓名', key: 'nickname', width: },
{header: '注册日期', key: 'createdAt', width: , style: {numFmt: 'yyyy/dd/mm hh:mm:ss'}},
{header: '启用状态', key: 'usertype', width: }
]
},
};
使用该包遇到的最大麻烦是,前端如何接收文件数据。该包提供了三种文件数据输出方式,1.直接writeFile()生成Excel文件,由前端直接访问文件。2.write()方法生成文件数据,前端在新的标签页访问URL,会自动将相应文件下载到本地;3.writeBuffer()生成buffer,由前端通过file-saver之类的前端工具转为文件,由于Buffer数据URL传输过程中的序列化问题,没有走通该方法,如有走通的朋友,可以留言,以供大家参考。
Excel文件导入导出(基于Nodejs、exceljs)的更多相关文章
- NodeJs之EXCEL文件导入导出MongoDB数据库数据
NodeJs之EXCEL文件导入导出MongoDB数据库数据 一,介绍与需求 1.1,介绍 (1),node-xlsx : 基于Node.js解析excel文件数据及生成excel文件. (2),ex ...
- Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)
Excel导入导出工具(简单.好用且轻量级的海量Excel文件导入导出解决方案.) 置顶 2019-09-07 16:47:10 $9420 阅读数 261更多 分类专栏: java 版权声明:本 ...
- C# excel文件导入导出
欢迎关注微信公众号 C#编程大全 这里有更多入门级实例帮你快速成长 在C#交流群里,看到很多小伙伴在excel数据导入导出到C#界面上存在疑惑,所以今天专门做了这个主题,希望大家有所收获! 环境:wi ...
- Excel文件导入导出
/** * 导入Excel文件数据 * * @param file 将要导入的Excel文件 * @param fileCheckKeyWord 用于判断导入文件是否 ...
- postman 测试Excel文件导入导出功能
1.导入的测试方法 选择form-data,key值填写方法对应的参数,选择File,Value处上传文件即可. 2. 导出的测试方法 在导出文件的时候,响应结果是乱码,然后在测试的时候选择下载,下载 ...
- 用NODEJS处理EXCEL文件导入导出,文件上传
參考文章 http://librajt.github.io/2013/08/04/handle-excel-file-with-nodejs/ 对照了 ExcelJS ,https://github. ...
- CSV文件导入导出MySQL
使用SQLyog 工具导入文件数据到MySQL: Excel文件导入导出: 需要驱动:Microsoft Office 2007驱动 导入需要注意的问题:1.Excel里数值列,默认导入会变成浮点型. ...
- Laravel Excel 实现 Excel-CSV 文件导入导出功能
Laravel Excel 是一款基于 PHPExcel 开发的Laravel框架专用的 Excel/CSV 文件导入导出功能的扩展包,用起来的非常方便. 它的 Github 地址是:https:// ...
- PowerDesigner数据库设计PDM基于Excel的导入导出总结
经常用到pdm来管理代码,一两张表,手写一下还凑合,一旦表多了,就慌了.于是,开始学习用vbs进行Excel的来快速导入导出操作PDM就变得很紧急了,搜罗了网络上的很多vbs脚本,各有各的优点,但对于 ...
随机推荐
- mybatis基础知识
一.什么是Mybatis 这里借用官网的一句话介绍什么是mybatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC ...
- 【原创】大叔问题定位分享(11)Spark中对大表子查询加limit为什么会报Broadcast超时错误
当两个表需要join时,如果一个是大表,一个是小表,正常的map-reduce流程需要shuffle,这会导致大表数据在节点间网络传输,常见的优化方式是将小表读到内存中并广播到大表处理,避免shuff ...
- Xshell出现‘The remote SSH server rejected X11 forwarding request’解决办法
当准备用Xshell进行远程连接的时候出现下面的情况: 那么跟着我来点击鼠标就ojbk了: 文件--->属性--->隧道 然后找打 把那个单选框的对号勾掉,然后点击确认就OK了!!
- storage和memory
memory:使用的是值传递,默认使用的是memory,传递的是值 storage:引用传递,传过来的是指针,后面一定要加上internal,private pragma solidity ^; co ...
- 解决Eclipse启动时报Initializing Java Tooling异常信息
1.启动Eclipse报错:An internal error occurred during: "Initializing Java Tooling".java.lang.Nul ...
- JavaScript读取对象属性遇到的问题
JavaScript中对于对象的属性存取方式有两种:“.”操作和[]操作. “.”操作属性名通常直接写,[]操作中属性的名字通常要加引号, 而当需要读取的对象属性名是一个变量的时候,一般使用[]操作, ...
- PHP源码安装后设置别名
PHP源码安装后测试是否能正常运行 每次在php目录./bin./php调用php很不方便,可以设置别名(方法一) vi ~/.bash_profile (修改根目录下这个文件) 设置完成后还 ...
- laravel 汇总数据
public function userInfluenceCollect(Request $request) { $types = ['logins', "checkins", & ...
- IntelliJ IDEA,酷炫插件系列,提高你的工作效率
今天介绍一下IDEA的一些炫酷的插件,IDEA强大的插件库,不仅能给我们带来一些开发的便捷,还能体现我们的与众不同. 1.插件的安装 打开setting文件选择Plugins选项 Ctrl + Alt ...
- oc调用swift的打包.a / framework 不成功?!
https://www.jianshu.com/p/734341f7c242 虽说是Swift和OC混编SDK,但目前只支持项目中使用了Swift调用OC的工程,暂不支持OC调用Swift的工程 ...