欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS前端--数据导出为EXCEL(支持大量数据导出)

程序员文章站 2022-04-01 19:23:35
js前端--数据导出为excel(支持大量数据导出) 数据导出为excel是前端比较常用的功能。笔者近期在网上收集汇总了几种常用的方法,供大家使用。 1、activexobje...

js前端--数据导出为excel(支持大量数据导出)

数据导出为excel是前端比较常用的功能。笔者近期在网上收集汇总了几种常用的方法,供大家使用。

1、activexobject(“excel.application”)

这种方法只能在ie下使用。

优点:参照vba控制excel对象。(代码不会的可以录制宏)

缺点:引用cell对象太慢,上万行数据导出时间超过2分钟

2、以table方式导出为html文件。

3、以csv方式导出。

使用中发现如果数据较多,上述第2、3中方法会失效,因此又整理了第4种方法。

第4种方法在ie10、chrome测试通过

以table格式导为xls文件导出

导出csv文件导出

大量数据导出csv导出

<script> //以table格式导为xls文件 function tabletoexcel(){ //要导出的json数据 var jsondata = [ { name:'001', id:'621699190001011231' }, { name:'002', id:'52069919000101547x' }, { name:'003', id:'423699190103015469' }, { name:'004', id:'341655190105011749' } ] //导出前要将json转成table格式 //列标题 var str = ' name id '; //具体数值 遍历 for(let i = 0;i ' ;="" for(let="" item="" in="" jsondata[i]){="" var="" cellvalue="jsondata[i][item];" 不让表格显示科学计数法或者其他格式="" 方法1="" tr里面加="" 方法2="" 是改为='xxxx' 格式="" 如果纯数字且超过15位="" var="" reg="/^[0-9]+.[0-9]*$/;" if="" ((cellvalue.length="">15) && (reg.test(cellvalue))){ //cellvalue = '="' + cellvalue + '"'; }*/ //此处用`取代',具体用法搜索模板字符串 es6特性 str+=`${cellvalue}`; // str+=`${cellvalue}`; } str+=''; } var worksheet = '导出结果' var uri = 'data:application/vnd.ms-excel;base64,'; //下载的表格模板数据 var template = ` ${str}
`; //下载模板 function base64 (s) { return window.btoa(unescape(encodeuricomponent(s)))} window.location.href = uri + base64(template); } function tocsv(){ //要导出的json数据 var jsondata = [ { name:'001', id:'621699190001011231' }, { name:'002', id:'52069919000101547x' }, { name:'003', id:'423699190103015469' }, { name:'004', id:'341655190105011749' } ] //导出前要将json转成table格式 //列标题 var str = 'name,id\n'; //具体数值 遍历 for(let i = 0 ; i 100000;i++){>