亲测有用 ajax获取数据渲染到excel表格中,数据表头从另外的接口获取数据 同时渲染到表格中
没多少废话 直接上代码 :
顶部是我 引用的js 也可以重新下载
大佬们 看到我这个 免费的资源 还不赶紧给我关注 给我赞
先引入 xlsx.full.min.js
下载源码地址: 小二· / xlsx · GitCode
这是结合我自己代码封装了一下 减少重复代码用的 ;
保存后excel 名称也是 自定义的 可以自己获取想要名称 进行自定义保存
注意:
我做了判断 如果没有数据就不会执行下载 不然就会报错 比较麻烦 所以就直接做了以为为空判断
还有 exportExcel 参数 顺序 必须按照这边写顺序的参数进行传值 不然就会报错 这一点 和 Java 不一样
function exportExcel(url ,ERP_show, getTbstru ,header) {
$.ajax({
url: url,
type: "post",
data: JSON.stringify(ERP_show),
async: false,
contentType: "application/json;charset=UTF-8",
dataType: "json",
success: function (data) {
var jsonData = data.data;
// console.log(jsonData)
if (jsonData.length == 0){
alert("没有数据导出");
return;
}else {
$.ajax({
url: header,
type: "post",
data: JSON.stringify(getTbstru),
async: false,
contentType: "application/json;charset=UTF-8",
dataType: "json",
success: function (data) {
// console.log(data);
var customColumns = data.data;
// console.log(customColumns)
var fddesc = [];
var fdname = [];
for (var i = 0; i < customColumns.length; i++) {
fddesc.push(customColumns[i].fddesc);
fdname.push(customColumns[i].fdname);
}
const firstJsonObject = jsonData[0];
// console.log(firstJsonObject)
const keys = Object.keys(firstJsonObject);
// console.log(keys)
// 预处理JSON数据以匹配自定义列名
这里因为我是从其他数据取出来 数据是乱的 所以多进行一步进行 匹配列 然后把数据放入对应列
const preprocessedData = jsonData.map(item => {
const result = {};
// 遍历 fdname 数组
customColumns.forEach(field => {
// 检查 field.fdname 是否是 item 的一个键
const name = field.fdname;
const fddesc = field.fddesc;
// console.log(name)
if (keys.includes(name)) {
// 如果存在,使用 field.fddesc 作为新键,item[field.fdname] 作为值
result[fddesc] = item[name];
}else {
// 如果不存在,可以选择设置一个默认值或忽略
// 例如,设置为 undefined 或跳过该字段
result[fddesc] = undefined;
}
});
return result;
});
// console.log(preprocessedData)
var ws = XLSX.utils.json_to_sheet(preprocessedData);
var wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
var pageTitle = 'text';
// console.log('当前页面名称是:' + pageTitle);
XLSX.writeFile(wb, pageTitle+".xlsx");
}
})
}
}
})
}