令最新JS-XLSX支持样式的改造方法

栏目: JavaScript · 发布时间: 5年前

令最新JS-XLSX支持样式的改造方法

背景

最近五一小长假,统一处理下之前开源的 Layui导出插件 lay-excel 反馈的部分问题,这个插件核心使用的是经过改造的 protobi/js-xlsx,支持设置样式但是不支持诸如 导出文件压缩、边距设置等功能,还存在很多BUG,效率也不高。

为解决这些问题,博主开始着手改造最新 JS-XLSX 让其支持样式设置,断点调试再加上代码对比,最后改造成功。

改造完毕的 xlsx.js 在此,可自行引入:

https://github.com/wangerzi/layui-excel/blob/master/src/xlsx.js

记得配合 jszip.js 使用,否则报错:

https://github.com/wangerzi/layui-excel/blob/master/src/jszip.js

开始前的准备

SheetJs/js-xlsx是目前依旧维护的最新版本,protobi/js-xlsx 是大约两年前的支持设置样式的版本,很多比较实用的功能都没有。

开源项目名称 地址 用于
SheetJS / js-xlsx https://github.com/SheetJS/js-xlsx 导出的基础逻辑
protobi / js-xlsx https://github.com/protobi/js-xlsx 可以设置样式,用于补全样式功能

改造思路

博主做了个插件预览放在了服务器上,如果想了解具体的改造原理,可以跟着思路在 http://excel.wj2015.com 上自行调试一下

断点调试,找有关样式设置的代码

  • 点击批量设置样式按钮,在调用行处打断点
var wbout = XLSX.write(wb, {bookType: type, type: 'binary', cellStyles: true});

令最新JS-XLSX支持样式的改造方法

  • 发现xlsx导出进入了此函数

令最新JS-XLSX支持样式的改造方法

  • 进一步调试,发现了差异

令最新JS-XLSX支持样式的改造方法

根据支持样式的版本,补全缺失代码

  • 补全样式代码

进入最新版 https://github.com/SheetJS/js-xlsx/blob/master/dist/xlsx.js ,搜索 StyleBuilder 发现没有这个类,但是在 https://github.com/protobi/js-xlsx/blob/master/dist/xlsx.js 发现了这个类,与其依赖一起复制过来

令最新JS-XLSX支持样式的改造方法

  • 复制到目标文件暴露全局变量之前

令最新JS-XLSX支持样式的改造方法

  • 查找 style_builder 这个变量在 protobi/js-xlsx 中有哪些地方使用到了,依次复制到 SheetJS/protobi

令最新JS-XLSX支持样式的改造方法 令最新JS-XLSX支持样式的改造方法 PS:几年过去了,这里的逻辑基本没变,所以放心复制好了

  • 最后,测试一下导出,发现可以设置样式了

令最新JS-XLSX支持样式的改造方法


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法分析导论(第2版)(英文版)

算法分析导论(第2版)(英文版)

[美]Robert Sedgewick(罗伯特•塞奇威克)、[美]Philippe Flajolet(菲利普•弗拉若莱) / 电子工业出版社 / 2015-6 / 128.00元

《算法分析导论(第2版)(英文版)》全面介绍了算法的数学分析中所涉及的主要技术。涵盖的内容来自经典的数学课题(包括离散数学、初等实分析、组合数学),以及经典的计算机科学课题(包括算法和数据结构)。《算法分析导论(第2版)(英文版)》的重点是“平均情况”或“概率性”分析,书中也论述了“最差情况”或“复杂性”分析所需的基本数学工具。 《算法分析导论(第2版)(英文版)》第 1 版为行业内的经典著......一起来看看 《算法分析导论(第2版)(英文版)》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具