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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM