【layUI】点击导出按钮,导出excel文件

要实现的功能如下:根据执行状态判断是否可以导出。如果可以导出,点击导出,在浏览器里下载对应的文件。

|------|
| 代码实现 |

html里:

html 复制代码
<table class="layui-hide" id="studentTable" lay-filter="studentTable"></table>

js里:

javascript 复制代码
studentTable.loadTable = function() {
	var form = layui.form;
	table = layui.table;
	table.render({
		elem: '#studentTable',
		url: ctx + '/studentTable/getList.shtml',
		method: "post",
		toolbar: "#toolbarWarp",
		defaultToolbar: [],
		parseData: function(jsonData) {
			if (jsonData.code == '200') {
				var data = jsonData.data;
				return {
					"code": jsonData.code,
					"msg": jsonData.message,
					"total": data.total,
					"rows": data.list
				}
			}
			return {
				data: []
			};
		},
		text: {
			none: '暂无相关数据'
		},
		request: { //分页
			pageName: 'pageNo',
			limitName: 'pageSize'
		},
		response: {
			statusName: 'code',
			statusCode: "200",
			msgName: 'msg',
			countName: 'total',
			dataName: 'rows'
		},
		page: true,
		limits: [10, 20, 30, 40, 50, 60, 70, 80, 90],
		cellMinWidth: 100,
		cols: [[{
			type: 'radio',
			fixed: 'left'
		},
		{
			field: 'status',
			title: '执行状态',
			sort: false,
			align: 'center',
			templet: function(row) {
				if (row.status == '1') {
					return "待执行";
				}
				if (row.status == '2') {
					return "执行完毕";
				}
				if (row.status == '3') {
					return "暂停";
				}
				return "未知";
			}
		},
		{
			field: 'opeate',
			title: '操作',
			sort: false,
			align: 'center',
			fixed: "right",
			templet: function(row) {
				var result;
				if (row.status == '2') {
					result = '<a class="layui-btn  layui-btn-xs" href="javascript:studentTable.export(\'' + row.code + '\')">导出</a>';
				} else {
					result = '<a class="layui-btn layui-btn-disabled layui-btn-xs">导出</a>';
				}
				return result;
			}
		}]]
	});

	studentTable.export = function(code) {
		$.ajax({
			type: "post",
			data: {
				code: code
			},
			url: ctx + "/studentTable/export.shtml",
			success: function(data) {
				// msg("导出成功");
				var localObj = window.location; //当前页面地址
				var protocol = location.protocol; //http/https
				var host = localObj.host; //地址栏IP和端口号
				var contextPath = localObj.pathname.split("/")[1]; //项目名
				if (!data.includes("false")) {
					window.location.href = protocol + "//" + host + "/" + contextPath + data;
				} else {
					errorAlert("导出失败");
				}
			},
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				errorAlert("系统异常");
			}
		});
	}

代码块解读:

1、定义了导出按钮,而且去调用了同文件中的export()方法:

bash 复制代码
result = '<a class="layui-btn  layui-btn-xs" href="javascript:studentTable.export(\'' + row.code + '\')">导出</a>';

2、 让浏览器跳转到新的url,即开始下载excel文件:

bash 复制代码
window.location.href = protocol + "//" + host + "/" + contextPath + data;

3、实现思路大概为:

(1)调用后端查询列表方法,在<操作>列,定义导出按钮,并去调用export()方法

(2)在export()里,去调用后端导出方法。

(3)后端导出方法要做的工作有:根据传入的code查询出数据,填充到excel里;将excel上传到服务器上;最后将文件地址返回给前端。

(4)export()方法接收到这个url地址后,请求这个地址,在h5页面下载excel文件

|----|
| 小结 |

这个导出按钮是在js里添加并实现逻辑的,和之前是在html里添加的不一样。

相关推荐
Am-Chestnuts1 天前
AI表格复制到Excel后日期金额和编号被改写:导入与格式检查方法
excel
方渐鸿1 天前
【无标题】使用Agent总结网页信息写入Excel
ai·excel
汉拓3D数字化1 天前
设计标准化怎么落地?企业设计标准化的5阶段实施路径
科技·excel·系统·软件
灵析表格1 天前
json_ObjectToKV 函数:Excel解析JSON对象的权威方案
json·excel
灵析表格1 天前
灵析表格文本处理函数技术白皮书:WPS Excel 官方函数扩展库 18 项文本规整与正则批处理企业落地标准
ai·json·excel·wps
灵析表格2 天前
WPS Excel官方函数扩展库数据安全加密校验函数深度研究报告:Excel国密SM3/SM4加解密、MD5摘要、UUID、Base64与URL编解码全栈解析
excel·wps
AC赳赳老秦2 天前
网页公开附件自动采集:OpenClaw 批量下载页面内嵌 Word/Excel 附件,统一格式后结构化入库
java·python·word·php·excel·deepseek·openclaw
VBAMatrix3 天前
表格导航!实现Word合并附注与多个Excel的数据同步
word·excel·审计报告·审计·会计师事务所·报告工具
AI英德西牛仔3 天前
手机文心怎么导出文档?AI 导出鸭一键解决格式崩塌与批量归档难题
人工智能·智能手机·excel·deepseek·ai导出鸭
AI导出鸭3 天前
Grok苹果版导出表格的工程化解耦方案:AI导出鸭的技术逻辑与批量实践
人工智能·excel·ai导出鸭