解决layui导出excel时科学计数问题

layui导出excel数字过长时会科学计数

使用layui自带的导出excel功能时,导出的excel,如果数字过长,会变成科学计数,如下:

1.4E+18

解决方法:

找到layui静态资源里的modules/table.js

查找d.exportFile,一共有两个,找到第二个,是一个函数

用以下代码,替换该函数:

d.exportFile = function(e, t, i) {
	t = t || d.clearCacheKey(d.cache[e]), i = i || "csv";
	var a = c.config[e] || {},
		// 分页按钮
		l = {
			csv: "text/csv",
			xls: "application/vnd.ms-excel"
		}[i],
		// meta格式
		n = document.createElement("a"),
		// a 标签
		type = i,
		meta = l,
		title = a.title

		layui.each(t, function(ks, vs) {
			var inner = {}
			layui.each(vs, function(k, v) {
				if (/^\d{9,}$/.test(v)) {
					vs[k] = vs[k] + '\t'
				}
				inner[k] = vs[k]
			});
			t[ks] = inner
		})
		if (r.ie) {
			var i = [],
				a = [];
			layui.each(t, function(t, l) {
				var n = [];
				"object" == typeof e ? (layui.each(e, function(e, a) {
					0 == t && i.push(a || "")
				}), layui.each(d.clearCacheKey(l), function(e, t) {
					n.push(t)
				})) : d.eachCols(e, function(e, a) {
					a.field && "normal" == a.type && !a.hide && (0 == t && i.push(a.title || ""), n.push(l[a.field]))
				}), a.push(n.join(","))
			});
			var data = i.join(",") + "\r\n" + a.join("\r\n")
			navigator.msSaveBlob(new Blob(['\ufeff' + data], {
				type: meta + ';charset=utf-8;'
			}), title + '.' + type)
		} else {
			return n.href = "data:" + l + ";charset=utf-8,\ufeff" + encodeURIComponent(function() {
				var i = [],
					a = [];
				return layui.each(t, function(t, l) {
					var n = [];
					"object" == typeof e ? (layui.each(e, function(e, a) {
						0 == t && i.push(a || "")
					}), layui.each(d.clearCacheKey(l), function(e, t) {
						n.push(t)
					})) : d.eachCols(e, function(e, a) {
						a.field && "normal" == a.type && !a.hide && (0 == t && i.push(a.title || ""), n.push(l[a.field]))
					}), a.push(n.join(","))
				}), i.join(",") + "\r\n" + a.join("\r\n")
			}()), n.download = (a.title || "table_" + (a.index || "")) + "." + i, document.body.appendChild(n), n.click(), void document.body.removeChild(n)
		}
},

保存即可。

layui的代码通常会压缩,可以这个网址去解压缩:https://tool.lu/js/index.html

layui导出excel,时间会变为时间戳

解决方法:

table.render({...
	cols: [
		[{
			field: 'birthday',
			...
		}]
	],
	parseData: function(res) {
		var data = res.data;
		for (index in data) {
			var birthday = data[index].birthday;
			var time = new Date(birthday);
			data[index].birthday = time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate();
		}
	}
})

为TA充电
共{{data.count}}人
人已赞赏
javascript

URl内参数判断

2021-1-14 15:55:05

javascriptjQuery

两个数据组对比,二组中不显示一组中有的数据

2021-6-9 16:59:27

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索