layui數據表格中導出所有數據的簡易解決辦法


layui數據表格中導出所有數據的簡易解決辦法

 

官方文檔的困惑

首先要說明的是:layui在 table 的工具欄內置了數據導出按鈕,如果你是用它內置的導出按鈕來導出數據,是沒有問題的。但內置的按鈕畢竟不太美觀,很多時候你可能想通過自己定義的按鈕來導出數據,這個時候,我們去參考官方文檔,會發現,官方的介紹是非常模糊不清的,請看官方的介紹:
語法:table.exportFile(id, data, type)
代碼示例:

var ins1 = table.render({
  elem: '#demo'
  ,id: 'test'
  //,…… //其它參數
})      
      
//將上述表格示例導出為 csv 文件
table.exportFile(ins1.config.id, data); //data 為該實例中的任意數量的數據
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

絕大多數盆友被這個data變量弄懵逼了,如果直接用它,瀏覽器會無情的提示:“Uncaught ReferenceError: data is not defined”。
其實,官方例子中的這個data變量,應該是表格數據的集合,但是,官方沒說清楚這個data數據要從哪里來,以致於很多小伙伴被弄得一頭霧水。

解決辦法

先看前端界面
在這里插入圖片描述
例如,我要通過單擊上圖中的“導出”按鈕來導出表格中的所有數據,那么我們在html文件中的代碼可以像下面這樣寫:

<!--工具欄-->
    <okToolbar>
        <button class="layui-btn" id="addUser">
            <i class="iconfont icon-tianjiayonghu1" ></i> 添加
        </button>
        <button class="layui-btn layui-btn-danger" id="batchDel">
            <i class="iconfont icon-shanchu"></i> 刪除
        </button>
        <button class="layui-btn layui-btn-warm" id="batchDisabled">
            <i class="iconfont icon-tingyong"></i> 鎖定
        </button>
        <button class="layui-btn layui-btn-normal" id="batchEnabled">
            <i class="iconfont icon-qiyong"></i> 解鎖
        </button>
        <button class="layui-btn" id="export">
            <i class="iconfont icon-export"></i> 導出
        </button>
        <span>共有數據:<i id="countNum"></i> 條</span>
    </okToolbar>
    <!--數據表格-->
    <table class="layui-hide" id="table1" lay-filter="tableFilter"></table>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

注意:上面代碼中“導出”按鈕的id為“export”,表格的id為table1。

js代碼:

<script>
    layui.use(['element', 'table', 'form', 'jquery', 'laydate','layer'], function () {
        var table = layui.table;         //表格
        var form = layui.form;           //表單
        var layer = layui.layer;         //彈層
        var $ = layui.jquery;

        var ins1=table.render({
            elem: '#table1',
            url: '/ant-admin/data/user.json',
            limit: 10,
            page:true,
            cols: [[
                {type: 'checkbox'},
                {field: 'id', title: 'ID',width:80, sort: true,align: 'center'},
                {field: 'username', title: '用戶名', sort: true,align: 'center'},
                {field: 'status', title: '狀態', templet: '#statusTpl',align: 'center'},
                {field: 'role', title: '角色類型', templet: '#roleTpl',sort: true,align: 'center'},
                {field: 'phone', title: '手機',align: 'center'},
                {field: 'createTime', title: '創建時間',align: 'center'},
                {field: 'lastLoginTime', title: '最近登錄時間',align: 'center'},
                {field: 'logins', title: '登陸次數',sort: true,align: 'center',width:100},
                {fixed: 'right', title: '操作', align:'center', minWidth:160,toolbar: '#barDemo'}
            ]],
            done: function (res, curr, count) {
                exportData=res.data;
            }
        });

        $("#export").click(function(){
	       	table.exportFile(ins1.config.id,exportData, 'xls');
        })
    })
</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

要點:
1、在表格渲染完成后的回調函數中,定義一個全局變量exportData,讓它取得表格中的數據集合。就是下面這行

exportData=res.data;
  • 1

2、在導出數據時將變量exportData作為data變量傳給table.exportFile(id, data, type) 函數。這樣就大功告成了,怎么樣,是不是很簡單!

3、需要說明的是:table.exportFile函數的第三個參數type默認是導出csv格式文件,要導出xls文件的話,把它設置成‘xls’就可以了。


免責聲明!

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



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