zoukankan      html  css  js  c++  java
  • layui使用layui-excel扩展导出xlsx格式文件

    layui-excel扩展导出的文件可用office打开,正常显示;直接用table带的导出功能,导出的文件用office打开显示乱码。

    layui-excel扩展下载地址:https://fly.layui.com/extend/excel/

     1 @extends('Admin.common.title')
     2 @section('content')
     3     
     4     <button class="layui-btn layui-btn-warm" type="button" id="download">下载数据卡</button>
     5     
     6     <!-- 导出表 不展示 -->
     7     <div style="display:none;"><table id="data_export"></table></div>
     8 
     9     <script>       
    10         layui.config({base: '/static/layui-excel/layui_exts/'}).use(['table', 'form', 'laydate', 'excel'], function () {
    11             var form = layui.form;
    12             var table = layui.table;
    13             var laydate = layui.laydate;
    14             var excel = layui.excel;
    15             
    16             //监听下载按钮
    17             $("#download").click(function () {
    18                 var ins1=table.render({
    19                     elem: '#data_export'
    20                     ,url:'/Shop/list'
    21                     ,method:'POST'
    22                     ,headers: {
    23                         'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    24                     }
    25                     ,async: false
    26                     ,cols: [[
    27                         {field:'brand',  title: '品牌'}
    28                         ,{field:'year',  title: '年份'}
    29                         ,{field:'activity',  title: '活动'}
    30                         ,{field:'stage',  title: '阶段'}
    31                         ,{field:'start_date',  title: '日期'}
    32                     ]]
    33                     ,page: false
    34                     ,limit: Number.MAX_VALUE
    35                     ,done: function (res, curr, count) {
    36                         exportFile('data_export')
    37                     }
    38                 });
    39             })
    40             //表格导出
    41             function exportFile(id) {
    42                 //根据传入tableID获取表头
    43                 var headers = $("div[lay-id=" + id + "] .layui-table-box table").get(0);
    44                 var htrs = Array.from(headers.querySelectorAll('tr'));
    45                 var titles = {};
    46                 for (var j = 0; j < htrs.length; j++) {
    47                     var hths = Array.from(htrs[j].querySelectorAll("th"));
    48                     for (var i = 0; i < hths.length; i++) {
    49                         var clazz = hths[i].getAttributeNode('class').value;
    50                         if (clazz != ' layui-table-col-special' && clazz != 'layui-hide') {
    51                             //排除居左、具有、隐藏字段
    52                             //修改:默认字段data-field+i,兼容部分数据表格中不存在data-field值的问题
    53                             titles['data-field' + i] = hths[i].innerText;
    54                         }
    55                     }
    56                 }
    57                 //根据传入tableID获取table内容
    58                 var bodys = $("div[lay-id=" + id + "] .layui-table-box table").get(1);
    59                 var btrs = Array.from(bodys.querySelectorAll("tr"))
    60                 var bodysArr = new Array();
    61                 for (var j = 0; j < btrs.length; j++) {
    62                     var contents = {};
    63                     var btds = Array.from(btrs[j].querySelectorAll("td"));
    64                     for (var i = 0; i < btds.length; i++) {
    65                         for (var key in titles) {
    66                             //修改:默认字段data-field+i,兼容部分数据表格中不存在data-field值的问题
    67                             var field = 'data-field' + i;
    68                             if (field === key) {
    69                                 //根据表头字段获取table内容字段
    70                                 contents[field] = btds[i].innerText;
    71                             }
    72                         }
    73                     }
    74                     bodysArr.push(contents)
    75                 }
    76                 //将标题行置顶添加到数组
    77                 bodysArr.unshift(titles);
    78                 //导出excel
    79                 excel.exportExcel({
    80                     sheet1: bodysArr
    81                 }, 'download-filename' + new Date().toLocaleString() + '.xlsx', 'xlsx');
    82             }
    83         });
    84     </script>
    85 @endsection
  • 相关阅读:
    [bzoj3694]最短路
    [bzoj3172][Tjoi2013]单词
    [bzoj2243][SDOI2011]染色
    [bzoj1036][ZJOI2008]树的统计Count
    [学习笔记]树链剖分
    [bzoj4552][Tjoi2016][Heoi2016]排序
    [51nod1515]明辨是非
    [51nod1685]第k大区间
    [日常训练]training
    BZOJ3811: 玛里苟斯
  • 原文地址:https://www.cnblogs.com/Jessie-candy/p/14472944.html
Copyright © 2011-2022 走看看