layui導(dǎo)出Excel表格的方法代碼舉例
一、利用layui自帶的excel導(dǎo)出功能
// 原始容器
<table id="demo" lay-filter="test"></table>
//JS 調(diào)用:
table.render({
elem: '#demo'
,toolbar: '#toolbarDemo' // 重點,可默認,也可自己設(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'); //默認導(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)出當前頁內(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') {
//排除居左、具有、隱藏字段
//修改:默認字段data-field+i,兼容部分數(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) {
//修改:默認字段data-field+i,兼容部分數(shù)據(jù)表格中不存在data-field值的問題
var field = 'data-field' + i;
if (field === key) {
//根據(jù)表頭字段獲取table內(nèi)容字段
contents[field] = btds[i].innerText;
}
}
}
bodysArr.push(contents)
}
//將標題行置頂添加到數(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

