扩展 layui 的导出插件 layui.excel

sadwind2022-06-08笔记538

就像下面说的一样,遇到问题。https://gitee.com/zypy333/layui-excel

之前在工作过程中还有社区交流过程中,发现对导出 Excel 文件有需求,所以就萌发了封装插件的想法。导出excel功能基于 XLSX.js,部分代码参考网上的资料。

环境提示:预览环境需要部署在服务器下,不然无法异步获取需要导出的数据

函数列表

函数名描述
downloadExcel(data, filename, type)导出数据,并弹出指定文件名的下载框
filterExportData(data, fields)梳理导出的数据,包括字段排序和多余数据过滤

重要函数参数配置

downloadExcel参数配置

核心方法,用于将 data 数据依次导出,如果需要调整导出后的文件字段顺序或者过滤多余数据,请查看 filterExportData 方法

参数名称描述默认值
data数据列表必填
filename文件名称(不要带后缀)必填
type导出类型,支持 xlsx、csv、ods、xlsb、fods、biff2xlsx
filterExportData参数配置

辅助方法,梳理导出的数据,包括字段排序和多余数据过滤

参数名称描述默认值
data需要梳理的数据必填
fields支持数组和对象,用于映射关系和字段排序必填

fields参数设计

在实际使用的过程中,后端给的参数多了,或者字段数据不符合导出要求,这都是很常见的情况。为了导出数据的顺序正确和数据映射正确,于是新增了这个方法。

fields 用于表示对象中的属性顺序和映射关系,支持『数组』和『对象』两种方式

假如后台给出了这样的数据:

{    "code":0,    "msg":"",    "count":3,    "data":[        {            "id":10000,            "username":"user-0",            "sex":"女",            "city":"城市-0",            "sign":"签名-0",            "experience":255,            "logins":24,            "wealth":82830700,            "classify":"作家",            "score":57        }    ]}

数组方式:

仅用于排序、字段过滤,比如我希望的导出顺序和字段是:

idsexusernamecity

那么,我可以这样写:

var data = [];// 假设的后台的数据excel.filterExportData(data, ['id', 'sex', 'username', 'city']);excel.downloadExcel(data, '导出测试', 'xlsx');

对象方式:

可以用于排序、重命名字段、字段过滤,比如我希望 username 字段重命名为 name,保留 sex 和 city 字段

那么,我可以这样写:

var data = [];// 假设的后台的数据excel.filterExportData(data, {    username: 'name',    sex:'sex',    city: 'city'});excel.downloadExcel(data, '导出测试', 'xlsx');
调用样例

请见下方『使用方法』

功能概览:

  • 支持梳理导出的数据并导出多种格式数据

使用方法:

注意:此扩展需先引入layui.js方可正常使用。demo详见index.html

js使用样例:
// 注:extends/excel.js的存放路径layui.config({	base: 'extends/',}).extend({	excel: 'excel',});layui.use(['jquery', 'excel', 'layer'], function() {		var $ = layui.jquery;		var layer = layui.layer;		var excel = layui.excel;		// 模拟从后端接口读取需要导出的数据		$.ajax({			url: 'list.json'			,dataType: 'json'			,success(res) {				var data = res.data;				// 重点!!!如果后端给的数据顺序和映射关系不对,请执行梳理函数后导出				data = excel.filterExportData(data, [					'id'					,'username'					,'experience'					,'sex'					,'score'					,'city'					,'classify'					,'wealth'					,'sign'				]);				// 重点2!!!一般都需要加一个表头,表头的键名顺序需要与最终导出的数据一致				data.unshift({ id: "ID", username: "用户名", experience: '积分', sex: '性别', score: '评分', city: '城市', classify: '职业', wealth: '财富', sign: '签名' });				var timestart = Date.now();				excel.downloadExcel(data, '导出接口数据', 'xlsx');				var timeend = Date.now();				var spent = (timeend - timestart) / 1000;				layer.alert('单纯导出耗时 '+spent+' s');			}			,error() {				layer.alert('获取数据失败,请检查是否部署在本地服务器环境下');			}		});	});
导出数据返回样例:

此数据来自 layui 官方的表格样例

{    "code":0,    "msg":"",    "count":3,    "data":[        {            "id":10000,            "username":"user-0",            "sex":"女",            "city":"城市-0",            "sign":"签名-0",            "experience":255,            "logins":24,            "wealth":82830700,            "classify":"作家",            "score":57        },        {            "id":10001,            "username":"user-1",            "sex":"男",            "city":"城市-1",            "sign":"签名-1",            "experience":884,            "logins":58,            "wealth":64928690,            "classify":"词人",            "score":27        },        {            "id":10002,            "username":"user-2",            "sex":"女",            "city":"城市-2",            "sign":"签名-2",            "experience":650,            "logins":77,            "wealth":6298078,            "classify":"酱油",            "score":31        }    ]}
Demo说明:

index.html 页面文件+JS处理文件

list.json 模拟导出的数据

extends/authtree.js 权限树扩展

layui/ 官网下载的layui


relate content

JQUERY 选择器 为啥不能选择NAME呢

语法描述$(this)当前 HTML 元素$("p")所有 <p> 元素$("p.intro")所有 class="intro"...

MYSQL 数据库记录删除后 ID不连续 如何恢复

在数据库维护过程中,不免会删除一些记录一般主键ID都是自增字段,不可编辑,删除就是删除了,这个字段值再也不会出现了。因此产生两个问题,一是有些项目数据库超大,增删又频繁,是可能ID数量不够用的。二就是...

VUE学习:十.编码技巧

前言总结一些开发中常见的问题,优化改善编码技巧,提高代码质量#1.条件判断常见条件判断iflet name = "case1"if (nam...

php有内置函数array_unique可以用来删除数组中的重复值

array_unique -- 移除数组中重复的值array_unique说明array array_unique ( array array )array_unique() 接受 array 作为输...

VUE学习:一.开发工具

VUE学习:一.开发工具

前言了解前端项目开发中环境的相关配置,工具的相关使用技巧等,有助于快速解决开发时遇到的各种问题,提高开发效率#1.Node.js注意实际开发中团队中 node 版本最好保持一致,包括各种环境(dev、...

WORDPRESS 使用结巴实现搜索中文分词

详细安装及说明参考以下,已经有比较详细的教程了:https://cloud.tencent.com/developer/article/2221841 GITHUB:https://github.co...

Post Reply    

◎Welcome to participate in the discussion.