layui導(dǎo)出Excel表格的方法代碼舉例
一、利用layui自帶的excel導(dǎo)出功能
// 原始容器
<table id="demo" lay-filter="test"></table>
//JS 調(diào)用:
table.render({
elem: '#demo'
,toolbar: '#toolbarDemo' // 重點(diǎn),可默認(rèn),也可自己設(shè)置按鈕
,defaultToolbar: ['filter', 'exports'], // exports為導(dǎo)出按鈕
//,…… //其他參數(shù)
});如下圖:

也可設(shè)置數(shù)據(jù)導(dǎo)出按鈕,通過(guò)方法導(dǎo)出任意數(shù)據(jù),方法如下:
語(yǔ)法:
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ù)量的數(shù)據(jù)該方法也可以不用依賴(lài)table的實(shí)例,可直接導(dǎo)出任意數(shù)據(jù):
table.exportFile(['名字','性別','年齡'], [ ['張三','男','20'], ['李四','女','18'], ['王五','女','19'] ], 'csv'); //默認(rèn)導(dǎo)出 csv,也可以為:xls
二、使用第三方擴(kuò)展插件:excel.js
1、下載插件放入項(xiàng)目中

2、前端界面設(shè)置button按鈕
<button class="layui-btn layui-btn-normal " lay-event="bgShow">導(dǎo)出</button>
3、獲取點(diǎn)擊事件
//頭工具欄事件
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"); // 第一個(gè)參數(shù):table;第二個(gè)參數(shù)為文件名稱(chēng)
break;
};
});4、table分頁(yè),導(dǎo)出當(dāng)前頁(yè)內(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值的問(wèn)題
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值的問(wèn)題
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' // 對(duì)應(yīng)需要導(dǎo)出的字段,根據(jù)后臺(tái)返回?cái)?shù)據(jù)對(duì)應(yīng)需要字段
])
// 對(duì)應(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序BindTap快速連續(xù)點(diǎn)擊目標(biāo)頁(yè)面跳轉(zhuǎn)多次問(wèn)題處理
這篇文章主要介紹了微信小程序BindTap快速連續(xù)點(diǎn)擊目標(biāo)頁(yè)面跳轉(zhuǎn)多次問(wèn)題處理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04
BootStrap實(shí)現(xiàn)鼠標(biāo)懸停下拉列表功能
這篇文章主要介紹了BootStrap實(shí)現(xiàn)鼠標(biāo)懸停下拉列表功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
JavaScript構(gòu)造函數(shù)原理及實(shí)現(xiàn)流程解析
這篇文章主要介紹了JavaScript構(gòu)造函數(shù)原理及實(shí)現(xiàn)流程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
JS正則表達(dá)式修飾符中multiline(/m)用法分析
這篇文章主要介紹了JS正則表達(dá)式修飾符中multiline(/m)用法,結(jié)合實(shí)例形式分析了JS正則中多行模式multiline的功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-12-12
通過(guò)Jscript中@cc_on 語(yǔ)句識(shí)別IE瀏覽器及版本的代碼
通過(guò)Jscript中@cc_on 語(yǔ)句識(shí)別IE瀏覽器及版本的代碼,需要的朋友可以參考下。2011-05-05
JavaScript實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的5種方法總結(jié)
在前臺(tái)開(kāi)發(fā)中會(huì)涉及頁(yè)面跳轉(zhuǎn)的問(wèn)題,下面這篇文章主要給大家總結(jié)介紹了關(guān)于JavaScript實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的5種方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
JavaScript中使用Spread運(yùn)算符的八種方法總結(jié)
這篇文章主要給大家介紹了JavaScript中使用Spread運(yùn)算符的八種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
js貪心算法 錢(qián)幣找零問(wèn)題代碼實(shí)例
這篇文章主要介紹了js貪心算法 錢(qián)幣找零問(wèn)題代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09

