layui導(dǎo)出Excel表格的方法代碼舉例
一、利用layui自帶的excel導(dǎo)出功能
// 原始容器 <table id="demo" lay-filter="test"></table> //JS 調(diào)用: table.render({ elem: '#demo' ,toolbar: '#toolbarDemo' // 重點,可默認(rèn),也可自己設(shè)置按鈕 ,defaultToolbar: ['filter', 'exports'], // exports為導(dǎo)出按鈕 //,…… //其他參數(shù) });
如下圖:
也可設(shè)置數(shù)據(jù)導(dǎo)出按鈕,通過方法導(dǎo)出任意數(shù)據(jù),方法如下:
語法:
table.exportFile(id, data, type)
示例:
var ins1 = table.render({ elem: '#demo1' ,id: 'test' // ,.... //其他參數(shù) }) // 將上述表格示例導(dǎo)出為csv文件 table.exportFile(ins1.config.id, data); // data 為該實例中的任意數(shù)量的數(shù)據(jù)
該方法也可以不用依賴table的實例,可直接導(dǎo)出任意數(shù)據(jù):
table.exportFile(['名字','性別','年齡'], [ ['張三','男','20'], ['李四','女','18'], ['王五','女','19'] ], 'csv'); //默認(rèn)導(dǎo)出 csv,也可以為:xls
二、使用第三方擴展插件:excel.js
1、下載插件放入項目中
2、前端界面設(shè)置button按鈕
<button class="layui-btn layui-btn-normal " lay-event="bgShow">導(dǎo)出</button>
3、獲取點擊事件
//頭工具欄事件 layui.table.on('toolbar(table)', function (obj) { var checkStatus = layui.table.checkStatus(obj.config.id); switch (obj.event) { case 'bgShow': //導(dǎo)出 exportFile("table", "XXXXX"); // 第一個參數(shù):table;第二個參數(shù)為文件名稱 break; }; });
4、table分頁,導(dǎo)出當(dāng)前頁內(nèi)容
function exportFile(id, titleInfo) { //根據(jù)傳入tableID獲取表頭 var headers = $("div[lay-id=" + id + "] .layui-table-box table").get(0); var htrs = Array.from(headers.querySelectorAll('tr')); var titles = {}; for (var j = 0; j < htrs.length; j++) { var hths = Array.from(htrs[j].querySelectorAll("th")); for (var i = 0; i < hths.length; i++) { var clazz = hths[i].getAttributeNode('class').value; if (clazz != ' layui-table-col-special' && clazz != 'layui-hide') { //排除居左、具有、隱藏字段 //修改:默認(rèn)字段data-field+i,兼容部分?jǐn)?shù)據(jù)表格中不存在data-field值的問題 titles['data-field' + i] = hths[i].innerText; } } } //根據(jù)傳入tableID獲取table內(nèi)容 var bodys = $("div[lay-id=" + id + "] .layui-table-box table").get(1); var btrs = Array.from(bodys.querySelectorAll("tr")); var bodysArr = new Array(); for (var j = 0; j < btrs.length; j++) { var contents = {}; var btds = Array.from(btrs[j].querySelectorAll("td")); for (var i = 0; i < btds.length; i++) { for (var key in titles) { //修改:默認(rèn)字段data-field+i,兼容部分?jǐn)?shù)據(jù)表格中不存在data-field值的問題 var field = 'data-field' + i; if (field === key) { //根據(jù)表頭字段獲取table內(nèi)容字段 contents[field] = btds[i].innerText; } } } bodysArr.push(contents) } //將標(biāo)題行置頂添加到數(shù)組 bodysArr.unshift(titles); // 導(dǎo)出excel layui.config({ base: 'assets/libs/layui_extends/' // 插件路徑 }).use(['excel'], function () { var excel = layui.excel; excel.exportExcel({ sheet1: bodysArr }, titleInfo + new Date().toLocaleString() + '.xlsx', 'xlsx'); }); }
5、導(dǎo)出全部數(shù)據(jù)
function exportFile(id, titleInfo) { $.ajax({ url: 'xxxxxx', // 獲取數(shù)據(jù)的接口 type: 'get', data: {}, success: function (res) { if (res.code == 0) { var excelData = res.data; layui.config({ base: 'assets/libs/layui_extends/' }).use(['excel'], function () { var excel = layui.excel; excelData = excel.filterExportData(excelData, [ 'aaa','bbb','ccc' // 對應(yīng)需要導(dǎo)出的字段,根據(jù)后臺返回數(shù)據(jù)對應(yīng)需要字段 ]) // 對應(yīng)數(shù)據(jù)的表頭 excelData.unshift({ aaa: 'aaa', bbb: 'bbb', ccc: 'ccc' }); excel.exportExcel(excelData, titleInfo + new Date().toLocaleString() + '.xlsx', 'xlsx'); }); } else { layer.closeAll(); layer.msg("數(shù)據(jù)導(dǎo)出失敗", { icon: 2 }); } }, error: function (error) { console.log("獲取全部數(shù)據(jù)失?。?, error); } }) }
總結(jié)
到此這篇關(guān)于layui導(dǎo)出Excel表格的文章就介紹到這了,更多相關(guān)layui導(dǎo)出Excel表格內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS中把函數(shù)作為另一函數(shù)的參數(shù)傳遞方法(總結(jié))
下面小編就為大家?guī)硪黄狫S中把函數(shù)作為另一函數(shù)的參數(shù)傳遞方法(總結(jié))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06文本框只能輸入數(shù)字的js代碼(含小數(shù)點)
下面小編就為大家?guī)硪黄谋究蛑荒茌斎霐?shù)字的js代碼(含小數(shù)點)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07原生JS+CSS實現(xiàn)炫酷重力模擬彈跳系統(tǒng)的登錄頁面
今天小編給大家分享基于原生JS實現(xiàn)一個炫酷的登錄頁面,實現(xiàn)效果有點像重力模擬彈跳系統(tǒng),效果非常棒,需要的朋友參考下實現(xiàn)代碼吧2017-11-11