Layui第三方扩展LAY

it2024-11-02  4

一、前言二、使用 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> //JS 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; //引入LAY_EXCEL插件 let $ = layui.jquery; let exportData = {}; //定义导出报表的数据 let tableObj = table.render({ elem: '#table-id' //表ID ,url: '/.../.../...' //数据来源路径 ,cols: [[ /*{field: 'id', width: 80, title: 'ID', sort: true},*/ {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(){ //table.exportFile(tableObj.config.id, exportData, 'xls'); //调整为 downloadLayExcel('Excel文件名', exportData, tableObj); }) /** * 调用LAY_EXCEL插件下载Excel表格 * @param tableName 下载的Excel文件名 * @param tableData 表格的数据 * @param tableObject 表格对象 * @param tableType 下载的Excel文件类型 * @returns {*} */ function downloadLayExcel(tableName, tableData, tableObject, tableType = 'xls') { let tableHeader = {}; //定义表格标题数据 {name: '用户名',sex: '男', age: '年龄'} let field = []; //定义表格的字段排序 ['name', 'sex', 'age'];没在排序中的字段,不会输出在Excel中,这也是设置需要打印的字段 let data = []; //最后输出的表格数据 let cols = []; //表格属性数据 try{ //根据 console.log(tableObject) 打印,可得知表格的列信息位于 tableObject.config.cols[0] cols = tableObject.config.cols[0]; //获取定义的[表格列]数据 }catch(e) { } if (cols.length == 0) { return layer.msg('表格对象属性异常'); } //循环表格列数据,拼接出我们需要的Excel标题数据tableHeader,和Excel表格[显示/排序]字段field $.each(cols, function(key, value) { if (value.title != '操作') { //如果列名为 [ 操作 ],则跳过设置,不打印 tableHeader[value.field] = value.title; //标题内容设置 field.push(value.field); //表格排序字段设置(字段的顺序为表格列的顺序),也是设置Excel需要打印的字段 } }); //非空判断 if (!$.isEmptyObject(tableHeader) && field.length != 0) { data = excel.filterExportData(tableData, field); //设置需要打印的字段,排序顺序即设置的顺序 data.unshift(tableHeader); //表格标题追加 excel.exportExcel({sheet1: data}, tableName + '.' + tableType, tableType); //设置Excel打印的sheet,Excel文件名,Excel文件类型 } 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自定义导出数据类型
最新回复(0)