JS导出Excel文件的方式

JS导出Excel文件的方式

js导出Excel文件的方式有哪些:

  1. href拼接参数导出(不安全,别人可以通过拼接请求攻击你的数据库等):
	window.location.href = URL+拼接所需参数
  1. 通过post提交from表单的方式(建议使用该方式):
    注意:不要添加iframe,要不然会页面闪烁一下,而且你的代码可能会被漏洞扫描扫出来;
	 postDownLoadFile({
	      url:url,
	      data:params,
	      global:false,
	      method:'post'
	 });
	 var postDownLoadFile = function (options) {
     var config = $.extend(true, { method: 'post' }, options);
     var $form = $('<form _self="down-file-frame" method="' + config.method + '" />');
            $form.attr('action', config.url);
            for (var key in config.data) {
                $form.append('<input type="hidden" name="' + key + '" value="' + config.data[key] + '" />');
            }
            $(document.body).append($form);
            $form[0].submit();
            $form.remove();
     }

3.纯js之base64():

	   function getUserList(){
        $.ajax({
            url:"",
            type:"",
            data:{},
            dataType:"json",
            contentType:"application/json; charset=utf-8",
            async:false,
            success:function(request){
                let arr = [];
                for (let k = 0; k < request.data.length; k++) {
                    arr.push([  //将需要导出的数据重新构造新数组
                        request.data[k].name,
                        request.data[k].sex,
                        request.data[k].phone,
                    ])
                }
                const jsonData = arr;
                let str = "<tr><td>姓名</td><td>性别</td><td>电话</td></tr>";
                //循环遍历,每行加入tr标签,每个单元格加td标签
                for(let i = 0 ; i < jsonData.length ; i++ ){
                    str+='<tr>';
                    for(let item in jsonData[i]){
                        if(jsonData[i][item] == null){
                        str+=`<td> </td>`;
                        }else{
                        //增加\t为了不让表格显示科学计数法或者其他格式
                        str+=`<td>${ jsonData[i][item] + '\t'}</td>`;
                        }
                    }
                    str+='</tr>';
                }
                //Worksheet名
                let worksheet = '列表'
                let uri = 'data:application/vnd.ms-excel;base64,';
            
                //下载的表格模板数据
                let template = `<html xmlns:o="urn:schemas-microsoft-com:office:office" 
                xmlns:x="urn:schemas-microsoft-com:office:excel" 
                xmlns="http://www.w3.org/TR/REC-html40">
                <head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
                    <x:Name>${worksheet}</x:Name>
                    <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
                    </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
                    </head><body><table>${str}</table></body></html>`;
                //下载模板
                window.location.href = uri + base64(template)
            }
        });
    }
    function base64(){
        return window.btoa(unescape(encodeURIComponent(s)))
    }

4.使用插件 xlsx.full.min.js:

// 下载地址 https://github.com/SheetJS/js-xlsx/tree/master/dist
// 导入 xls插件  
// 构造导出数据
// 导出
setXlsData(ret){
   let now = new Date();
   let time = now.getFullYear() + "-" +((now.getMonth()+1)<10?"0":"")+(now.getMonth()+1)+"-"+((now.getDate()-1)<10?"0":"")+(now.getDate()-1);
   var arr = []
   for(var i = 0; i < ret.length; i++){
      arr.push({
          "产品":ret[i].pcode,
          "计划量":ret[i].pnum,
          "数量":ret[i].fnum,
      })
   }
   setTimeout(() => {
       this.setExcel(time,arr)
   }, 1000);
 },
 setExcel(date,arr){
    var ws = XLSX.utils.json_to_sheet(arr);/* 新建空workbook,然后加入worksheet */
    var wb = XLSX.utils.book_new();/*新建book*/
    XLSX.utils.book_append_sheet(wb, ws, "sheet1");/* 生成xlsx文件(book,sheet数据,sheet命名) */
    XLSX.writeFile(wb, date+"统计.xlsx");/*写文件(book,xlsx文件名称)*/
 },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值