【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里添加的不一样。

相关推荐
CodeCraft Studio10 小时前
Excel处理控件Aspose.Cells教程:使用 C# 在 Excel 中创建组合图表
c#·excel·aspose·图表
小镇学者10 小时前
【PHP】导入excel 报错Trying to access array offset on value of type int
android·php·excel
CodeCraft Studio10 小时前
Excel处理控件Aspose.Cells教程:使用 C# 从 Excel 进行邮件合并
开发语言·c#·excel
CodeCraft Studio16 小时前
Excel处理控件Aspose.Cells教程:使用 C# 在 Excel 中应用数据验证
c#·excel·aspose·文档开发·文档处理
雾林小妖20 小时前
POI设置Excel单元格背景色
excel·poi设置背景色
只有干货20 小时前
java若依 excel 导出高度自适应
java·excel
饼干哥哥1 天前
3个实操案例,学会用DeepSeek做VBA开发实现Excel自动化
excel·deepseek
CodeCraft Studio2 天前
国产化Excel处理组件Spire.XLS教程:用 Java 获取所有 Excel 工作表名称(图文详解)
java·excel·数据处理·spire
前端sweetGirl2 天前
Excel 怎么让透视表以正常Excel表格形式显示
excel
_oP_i2 天前
Excel 发现此工作表中有一处或多处公式引用错误。请检查公式中的单元格引用、区域名称、已定义名称以及到其他工作簿的链接是否均正确无误。弹窗
excel