表格数据导出Excel

2022-04-20 / 0 评论 / 25 阅读 / 正在检测是否收录...
function download() {
   var fileName =new Date().Format("yyyyMMddhhmmss");
   //$("#datagrid").datagrid("toExcel", fileName);
   let table = document.getElementById('datagrid');
   
   console.log(table)
   console.log(table.getElementsByTagName("tr"))

   for(var i=0; i<table.getElementsByTagName("tr").length;i++) {
      var tr = table.getElementsByTagName("tr")[i];
      var hiddenCell = [];
      for (var j=0; j<tr.getElementsByTagName("td").length;j++){
         var td = tr.getElementsByTagName("td")[j];
         if ("style" in td){
            if (td.style.display=="none"){
               hiddenCell.push(j);
            }
         }
      }
      var flag = 0;
      for (var k=0;k<hiddenCell.length;k++){
         var index = hiddenCell[k];
         tr.deleteCell(index-flag);
         flag++;
      }
   }
   let sheet = XLSX.utils.table_to_sheet(table);//将一个table对象转换成一个sheet对象
   sheet['!cols']=[{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100},{wpx: 100}];
   openDownloadDialog(sheet2blob(sheet), fileName+'.xlsx');
}
//导出Excel
// 将一个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;
}
function openDownloadDialog(url, saveName) {
   if (typeof url == 'object' && url instanceof Blob) {
      url = URL.createObjectURL(url); // 创建blob地址
   }
   var aLink = document.createElement('a');
   aLink.href = url;
   aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
   var event;
   if (window.MouseEvent) event = new MouseEvent('click');
   else {
      event = document.createEvent('MouseEvents');
      event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
   }
   aLink.dispatchEvent(event);
}
本文共 117 个字数,平均阅读时长 ≈ 1分钟
0

打赏

海报

正在生成.....

评论 (0)

取消