在作以前一个项目的时候,须要有生成excel表格的功能,在网上查询一番后,发现不少人都推荐Sheetjs的xlsx.js这款工具,本身使用了一下,感受也不错,上手简单,功能结构清晰。所以,在这里就我本身使用到的功能部分和使用时候出现问题简单总结一下。前端
1.为何由前端生成excel
过去的时候,excel表格的生成一般是由后端完成的,主要缘由是以前我的PC的性能较低,完成数据量过大的excel表格生成工做比较困难,耗时太长,会形成长时间浏览器的卡顿,对用户体验形成不好的影响。
而如今,我的PC的性能已经有很大的提高,数据量较大的excel表格生成不会对用户体验形成较大的影响(多少仍是会有影响的,可是已经没有那么夸张了,并且生成大数据量excel的功能通常是在网站的后台,用户每每可以接受必定时间的等待)。让用户PC机去处理excel的生成,可以解放服务器的很大压力,因此如今不少网站选择把生成excel的工做交付给前端去完成。git
2.SheetJS的xlsx.js简介
纯js便可读取/生成excel,功能强大,支持多种格式,兼容性高。
xlsx.js有core和full两个版本,使用xlsx.core.min.js版本基本上就能知足大部分需求,我在项目中选择了core的版本。
其余详细介绍能够去看官方github:https://github.com/SheetJS/sheetjs。github
3.XLSX对象
引入js文件后,会在window对象上挂载一个全局对象XLSX,全部的操做函数都经过这个全局对象调用。json
4.workbook对象与worksheet对象
workbook对象是描述一个excel文件的基本对象。
workbook对象中,主要包含了如下内容:后端
* SheetNames数组:excel文件包含的全部sheets名称列表
* Sheets数组:excel文件包含的全部sheets的内容(worksheet对象列表)
worksheet对象则包含了一个sheet表格的详细内容。
对象中包含的内容包括:数组
* !ref:单元格范围
* !rows:表格行属性
* !cols:单元格属性
* !merges:单元格合并
* A1/B1/C1...:对应e