SheetJS导出导入Excel
概述
SheetJS用于读写各种电子表格,免费版不支持样式调整。
官方说明文档:https://github.com/SheetJS/sheetjs
xlsx-style基于SheetJS二次开发,使其支持样式调整,但其开发停留在2017年,所基于的SheetJS版本老旧,缺失许多后续新增方法。
官方说明文档:https://github.com/protobi/js-xlsx
这两者默认文件名都为xlsx.core.min.js和xlsx.full.min.js,一般使用xlsx.core.min.js即可;
SheetJS所暴露出来的对象在最后一个语句, 分别为XLS,XLSX,ODS;
xlsx-style所暴露出来的对象在最后一个语句, 分别为XLS,XLSX;
由于两者所暴露出来的对象一样(都是XLS和XLSX),同时引用时会覆盖掉另一个,故要将xlsx-style所暴露的对象改为xlsxStyle,参考这个项目https://github.com/Ctrl-Ling/XLSX-Style-Utils;所暴露出来的对象在最后一个语句, 分别为XLS,xlsxStyle;使用SheetJS功能时用XLSX对象,使用xlsx-style功能时用xlsxStyle对象;
导出
项目采用异步提交后返回json,回调处理生成并下载Excel,其中sdata为导出字段信息,包括字段名称、字段描述、是否合并,合并是指一列中相邻单元格内容一样;

合并单元格
格式化日期,根据索引输出列名
转化,导出
其中write方法一定要用xlsxStyle对象调用,才能输出带格式文件;
解析
读取本地Excel,生成workbook,方法一,使用 ;
读取本地Excel,生成workbook,方法二,使用
处理表单内容
总结
- 本插件对浏览器要求较高,部分功能可能有兼容性问题;
- 替代方案一,NPOI,导出时在后端生成workbook,写入输出流在前端下载,项目参考;导入时在服务器读取流为DataTable,再用SqlBulkCopy批量复制到数据库,项目参考;
- 替代方案二,使用商业软件,Wijmo,项目可参考https://www.cnblogs.com/likeFlyingFish/p/5794467.html;
参考资料:
- https://www.cnblogs.com/likeFlyingFish/p/5794467.html
- https://www.jianshu.com/p/877631e7e411
- https://www.jianshu.com/p/74d405940305
- https://www.jianshu.com/p/869375439fee
- https://www.cnblogs.com/liuxianan/p/js-excel.html
- https://blog.csdn.net/tian_i/article/details/84327329

浙公网安备 33010602011771号