好久没有写过文章了,今天简单写一下几个方法
首先是对,vue excel导出,简单利用Export2Excel进行二次封装。废话不多说直接上代码
export function excel(columns, list, excelName) {
console.log(list)
import("@/vendor/Export2Excel").then((excel) => {
let tHeader = [],
filterVal = [];
columns?.forEach((item) => {
tHeader.push(item.title);
filterVal.push(item.key);
});
const data = list?.map((v) => filterVal.map((j) => v[j]));
excel.export_json_to_excel({
header: tHeader,
data,
filename: excelName,
autoWidth: true,
bookType: "xlsx",
});
});
return true
}
columns 为表头内容,汉字和对应的字段大致为
punishExcelParams: [
{
title: "司机ID",
key: "driver_id",
},
{
title: "登录ID",
key: "login_id",
},
{
title: "姓名",
key: "name",
}
],
可以对应请求数据的参数
list 这是对应的数据,excelName表示为导出表格的名字
第二个就是json或数组中的数字,由string,转换为number类型,(一个简单的遍历)
// 遍历提交数据中字符串类型转换为数组
export function stringToNumber(val) {
if (typeof val == 'object') {
if (Array.isArray(val) === true) {
for (let i = 0; i < val?.length; i++) {
if (typeof val[i] == 'string') {
if (val[i] == Number(val[i])) {
val[i] = Number(val[i])
}
} else if (typeof val[i] == 'object') {
val[i] = stringToNumber(val[i])
}
}
}
if (Array.isArray(val) === false) {
for (let key in val) {
if (typeof val[key] == 'string') {
if (val[key] == Number(val[key])) {
val[key] = Number(val[key])
}
} else if (typeof val[key] == 'object') {
val[key] = stringToNumber(val[key])
}
}
}
}
return val
}