需求:
现有一个数据统计分析模块,主体内容是table,列出了筛选后的数据,复制其中的数据到剪贴板,然后粘贴到excel中,方便进行后续的处理。
思路:
经过一番调研与动手实验,发现excel对数据分行、分列的依据是数据中的 制表符、换行符,也就是说只要在合适的位置插入制表符、换行符就可以实现我们想要的效果了。
但是,制表符和换行符是不可见的,键盘上也不能直接输入,要怎么实现呢?继续google,发现制表符对应的ascii是9,换行符对应的ascii是10,在javascript中则可以使用**String.fromCharCode**生成制表符和换行符,如下所示。
String.fromCharCode(9) // 制表符,用于分列
String.fromCharCode(10) // 换行符,用于换行
实战:
实际测试一下效果,生成一个如下的表格。
1 2 3
4 5 6
对应的代码就是这样子的。
[1,String.fromCharCode(9),2,String.fromCharCode(9),3,String.fromCharCode(10),4,String.fromCharCode(9),5,String.fromCharCode(9),6].join(' ')
将代码复制到浏览器执行,得到如下的结果。
复制到EXCEL中试试看,如下图所示。
效果还不错,满足我们的需求,也足够灵活,看起来没有什么坑,进一步封装一下,实现一个toExcelData的方法就可以了。