js使用xlsx插件导出table中的数据

发布时间 2023-06-03 12:23:14作者: 彼时听风
  1. js代码 需要引入<script type="text/javascript" src="static/js/xlsx.core.min.js"></script>
    //导出excel
            function toExcel(){
                
                 var blob = sheet2blob(XLSX.utils.table_to_sheet($('table')[0]));
                 //设置链接
                   var link = window.URL.createObjectURL(blob); 
                   var a = document.createElement("a");    //创建a标签
                   a.download = "企业反映问题诉求汇总表.xlsx";                //设置被下载的超链接目标(文件名)
                   a.href = link;                            //设置a标签的链接
                   document.body.appendChild(a);            //a标签添加到页面
                   a.click();                                //设置a标签触发单击事件
                   document.body.removeChild(a);            //移除a标签
            }
            
     
         // 将一个sheet转成最终的excel文件的blob对象,然后利用URL.createObjectURL下载
         function sheet2blob(sheet, sheetName) {
             sheetName = sheetName || 'sheet1';
             var workbook = {
                 SheetNames: [sheetName],
                 Sheets: {}
             };
             workbook.Sheets[sheetName] = sheet;
             // 生成excel的配置项
             var wopts = {
                 bookType: 'xlsx', // 要生成的文件类型
                 bookSST: false, // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
                 type: 'binary'
             };
             var wbout = XLSX.write(workbook, wopts);
             var blob = new Blob([s2ab(wbout)], {type:"application/octet-stream"});
             // 字符串转ArrayBuffer
             function s2ab(s) {
                 var buf = new ArrayBuffer(s.length);
                 var view = new Uint8Array(buf);
                 for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
                 return buf;
             }
             return blob;
         }