热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

导出excel表格,前端和后台导出

问题:项目框架中导出不知道有什么限制,数据稍微大点导出不了,向上面请求解决,结果一圈推下来又推回来了,所以决定自己写,参考了网上很多大神的博客,开始试了前端导出,想着比较简单,但是乱码问题始终解决不了

问题:项目框架中导出不知道有什么限制,数据稍微大点导出不了,向上面请求解决,结果一圈推下来又推回来了,所以决定自己写,参考了网上很多大神的博客,开始试了前端导出,想着比较简单,但是乱码问题始终解决不了,方法也贴上来,如果有大佬会的可以指点下。

 

前段导出:

  首先绑定导出按钮的click事件,我查询是一次性查询过来的,然后数据存在全局中,调用导出方法传入数据

  然后写导出方法:

  1. tableToExcel: function (dataSource) {  
  2.                 console.log(dataSource);  
  3.                 //列标题,逗号隔开,每一个逗号就是隔开一个单元格  
  4.                 var data = "日期,城市名称,设备,网元,告警标题,发生时间,恢复时间,恢复历时\n";     
  5.                 //增加\t为了不让表格显示科学计数法或者其他格式        
  6.                 for(var i = 0 ; i < dataSource.length ; i++ ){          
  7.                     for(var item in dataSource[i]){              
  8.                         data+=method.GB2321TOUFT8(dataSource[i][item])+'\t';    
  9.                     }          
  10.                     data+='\n';        
  11.                 };   
  12.                 //data = method.GB2321TOUFT8(data);  
  13.                 console.log(data);  
  14.                 var blob = new Blob([data], { type: 'text/csv' }); //new way   
  15.                 var csvUrl = URL.createObjectURL(blob);   
  16.                 document.getElementById("mylink").href = csvUrl;  
  17.                   
  18.             },

导出可以导出,但是用window7自带的excel打开就是乱码,用记事本查看编码是utf_8编码,转换成ANSI编码就不乱码了,查了了ANSI编码就是GB2321编码,找了很多转换方法没有转换过来,让客户自己转换编码不实际,所以放弃,用后台导出。

 

 后台导出:

  后台导出也是要前段的a标签配合,写一个导出按钮,包含a标签

  查询按钮改为设置a标签href属性为后台地址

  后台路径要保持一致,为了代码复用方便,我封装了这个导出方法,传入的时候传这么几个参数(一个包含每行数据的集合,列头名集合,导出表格名字,还有request和response对象)

  封装的方法,其实也不算完全封装,有些缺陷,注意我写的是数据查询出来都要转换成string类型的,我是写死的

 

   至此结束,浏览器会询问你是否下载文件,还有导出用的是poi的SXSSFWorkbook,这是为大数据导出使用的,适合大数据量导出,还有HSSFWorkbook,但是取数据大的话容易内存泄漏,里面设置也比较多,可以研究一下,还有一种csv导出,好像性能什么更加好,这个没有研究,有研究了再写博客。

 


推荐阅读
author-avatar
茴忆是抹不掉的伤
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有