纯前端利用 js-xlsx 之合并单元格(3)

前言 前两篇文章主要基本导入导出和导出不同格式文件,这次是因为有小伙伴问我怎么合并单元格。其实吧很多东西官网https://github.com/SheetJS/js-xlsx讲的比我清楚多了,不过既然问了我也就讲一下吧!!
其他文章传送门:

  • 纯前端利用 js-xlsx 实现 Excel 文件导入导出功能示例
  • 纯前端利用 js-xlsx 实现 Excel 文件导入导出功能示例2
  • handsontable结合js-xlsx实现可编辑xlsx导入导出功能
  • 异步文件流读取示例

1.导入数据观察数据格式

1.1.我们先创建一个具有合并单元格的xlsx表格

就以表头数据合并示例吧:


纯前端利用 js-xlsx 之合并单元格(3)_第1张图片
示例
1.2.写个简单的数据导入功能(你可以参考前言中的文章编写,我就不放代码了)

导入xlsx参考数据格式:

纯前端利用 js-xlsx 之合并单元格(3)_第2张图片
示例
1.3.查看官网说明

官网https://github.com/SheetJS/js-xlsx#common-spreadsheet-format有做详细说明

纯前端利用 js-xlsx 之合并单元格(3)_第3张图片
官网

官网示例(http://sheetjs.com/demos/modify.html):

纯前端利用 js-xlsx 之合并单元格(3)_第4张图片
官网示例

根据官网说明我们简单看出合并单元格的数据格式是:

........
data["!merges"] = [{
                s: {//s为开始
                    c: 1,//开始列
                    r: 0//可以看成开始行,实际是取值范围
                },
                e: {//e结束
                    c: 4,//结束列
                    r: 0//结束行
                }
            }];
........

2.动手实验

2.1.写个简单的导出demo

我直接将文章http://www.jianshu.com/p/044c183edf42中的代码改改:
(==>点击查看示例<==)





    
    



    
    
    
    
    


结合 xlsxUtils 使用示例:





    
    



    
    
    
    
    
    
    



2.2.最终效果
纯前端利用 js-xlsx 之合并单元格(3)_第5张图片
gif
纯前端利用 js-xlsx 之合并单元格(3)_第6张图片
效果

合并功能就说到这里吧!至于导入的读取我相信小伙伴们也应该知道怎么处理了吧!
当然这里顺便解决下其他小伙伴问的关于xlsx数据量大的问题吧!

  • 对于导入:本身前端处理xlsx效率大多情况下没有后端效率高。原因是大多数客户端机器性能并不是很高,有可能数据量大就浏览器未响应了。所以我是在导入时会对文件大小和数据量进行判断。当然我建议你可以根据实际业务判断使用切换为前端处理还是后端处理文件。(其实我觉的用python处理也挺简单的)
  • 对于导出:况且大xlsx文件有点机子可能连打都打不开更别说编辑了。我之所以选用js-xlsx原因第一是降低服务器压力,第二就是为了防止导出数据量太大一些客户端电脑太差连文件都打不开编辑,所以限制文件导出数据量,分成多个xlsx导出。况且json处理与传输也比较简单。
总之最好是根据实际业务选择好的解决方案

你可能感兴趣的:(纯前端利用 js-xlsx 之合并单元格(3))