一、前言二、使用 LAY_EXCEL1、搜索2、使用3、快速开始的内容4、使用5、Layui下载 与 LAY_EXCEL下载 的区别6、Layui第三方扩展LAY_EXCEL自定义导出数据类型
一、前言
由于layui自带的数据表格导出excel存在兼容性问题:导出的表格不能修改内容,提示如下:
选择是之后,关闭文件,再次打开,还是修改前的内容。
Layui 数据表格导出数据
二、使用 LAY_EXCEL
1、搜索
百度搜索关键字layui第三方组件,选择网址为 https://fly.layui.com/extend/,进入到 layui 组件页面输入excel搜索第三方插件,找到扩展 layui 的导出插件 layui.excel,点击进去。找到我们需要用的:第三方插件源码码云(国内下载较快): https://gitee.com/wangerzi/layui-excel、第三方插件在线文档在线文档(请以此文档为准,layui插件中文档维护不及时)
2、使用
找到在线文档里的 快速上手 目录, 去看看
3、快速开始的内容
方式内容
数据获取方式Ajax请求获取LAY_EXCEL使用方式1、layui配置中引入excel,通过excel的方式使用;2、直接引入excel.js,通过全局变量LAY_EXCEL调用表格数据1、默认没有表头,我们可以通过data.unshift的方式在数组的最前面压入表头数据。2、还可以通过excel.filterExportData()方法控制数组字段的显示(哪些需要显示,像id,status这些字段一般不需要导出)与排序
4、使用
这里给出个demo,大家可以在此基础上继续完善,封装,比如把这个导出的逻辑直接写在公共Js文件中,在公共的Js文件中通过layui config的方式引入excel,这样我们就不需要每次导出的地方都引入Excel了。这里我们把excel.js代码直接放在...\lay\modules目录下代码如下:
<html>
<button class="layui-btn" id="export-id">
<i class="layui-icon layuiadmin-button-btn">导出
</i>
</button>
<table id="table-id"></table>
</html>
<script>
layui.use(['element', 'table', 'form', 'jquery', 'laydate', 'layer', 'excel'], function () {
let table = layui.table;
let form = layui.form;
let layer = layui.layer;
let excel = layui.excel;
let $ = layui.jquery;
let exportData = {};
let tableObj = table.render({
elem: '#table-id'
,url: '/.../.../...'
,cols: [[
{field: 'name', align:'center',title: '姓名'}
,{field: 'hobby', title: '爱好'}
,{field: 'create_time', title: '创建时间'}
]]
,text: {
none: '暂无数据!'
}
,where:{'target_date':'2020-02'}
,page: false
,parseData: function(res) {
exportData = res.data.data;
return {
code: res.code,
msg: res.msg,
count: res.data.count,
data: res.data.data
}
}
});
$("#export-id").click(function(){
downloadLayExcel('Excel文件名', exportData, tableObj);
})
function downloadLayExcel(tableName, tableData, tableObject, tableType = 'xls') {
let tableHeader = {};
let field = [];
let data = [];
let cols = [];
try{
cols = tableObject.config.cols[0];
}catch(e) {
}
if (cols.length == 0) {
return layer.msg('表格对象属性异常');
}
$.each(cols, function(key, value) {
if (value.title != '操作') {
tableHeader[value.field] = value.title;
field.push(value.field);
}
});
if (!$.isEmptyObject(tableHeader) && field.length != 0) {
data = excel.filterExportData(tableData, field);
data.unshift(tableHeader);
excel.exportExcel({sheet1: data}, tableName + '.' + tableType, tableType);
} else {
layer.msg('数据异常');
}
}
});
</script>
5、Layui下载 与 LAY_EXCEL下载 的区别
Layui下载是根据tableObj.config.id获取表格的标题,字段等信息,然后自动打印在Excel中LAY_EXCEL表格的标题data.unshift(),字段信息excel.filterExportData(),需要自己手动设置
6、Layui第三方扩展LAY_EXCEL自定义导出数据类型
Layui第三方扩展LAY_EXCEL自定义导出数据类型