zoukankan      html  css  js  c++  java
  • 导出excel表格,前端和后台导出

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

    前段导出:

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

      然后写导出方法:

    1. tableToExcel: function (dataSource) {  
    2.                 console.log(dataSource);  
    3.                 //列标题,逗号隔开,每一个逗号就是隔开一个单元格  
    4.                 var data = "日期,城市名称,设备,网元,告警标题,发生时间,恢复时间,恢复历时 ";     
    5.                 //增加 为了不让表格显示科学计数法或者其他格式        
    6.                 for(var i = 0 ; i < dataSource.length ; i++ ){          
    7.                     for(var item in dataSource[i]){              
    8.                         data+=method.GB2321TOUFT8(dataSource[i][item])+' ';    
    9.                     }          
    10.                     data+=' ';        
    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导出,好像性能什么更加好,这个没有研究,有研究了再写博客。

  • 相关阅读:
    Gin 框架的使用
    Beego model 增删改查
    Beego 搭建
    Go 如何快速解决依赖管理问题
    Go 语法基础
    使用vue控制元素显示隐藏
    Vue 刷新页面方式 和页面跳转的方式
    如何让nginx 显示文件夹目录
    Vue(项目配置iview的upload插件上传文件 )+ Python flask 上传文件
    uwsgi 常见配置
  • 原文地址:https://www.cnblogs.com/grasslucky/p/9953571.html
Copyright © 2011-2022 走看看