在做系统后台的时候,一般Excel表导出的方案是在服务器生成Excel表,返回给浏览器Excel文件地址,触发下载。当要导出的Excel行数达到数万行时,占用大量的服务器CPU或内存不说,还容易请求超时,还要改nginx配置。我就想,能否在前端浏览器创建Excel表呢?之后找到一个合适的js库可以实现这个功能:js-xlsx。
官方github地址:https://github.com/SheetJS/js-xlsx
实现思路
1、 浏览器创建xlsx
2、 每次ajax向后端请求若干行的数据,直到请求完成
3、 触发下载
本文省略php,web服务器等环境搭建步骤。看懂接下来代码实现,需要有一些js,html,PHP,ajax的一些相关知识。
1、js-xlsx库安装使用
本文使用npm
安装js-xlsx,如果不用npm
,可以直接去https://github.com/SheetJS/js-xlsx/releases下载压缩包(很卡,我的网下不动)。
创建项目目录后,执行以下命令,下载js-xlsx包:
npm init
npm install xlsx
创建index.html在header中引入
demo
2、创建html页面元素
index.html
导出进度:0%
浏览器显示:
3、添加js代码,初始化excel工作簿全局变量/excel sheet全局变量,绑定按钮点击事件
导出进度:0%