npm i @ycxxkj/excel
yarn add @ycxxkj/excel
import { ExcelWriter } from "@ycxxkj/excel";
async output(params) {
let data = [];
let next = true;
let count = 0;
let maxPage = 1000;
while (next) {
let pageRes = await this.list(params);
console.log("#debug#🚀 ~ file: Order.js:23 ~ output ~ params:", params, pageRes)
if (pageRes.code != 0) {
break;
}
let pageData = pageRes.data;
pageData.data.forEach((item, index) => {
data.push(item);
});
if (pageData.current_page >= pageData.last_page) {
next = false;
break;
}
params.page = params.page + 1;
count++;
if (count > maxPage) {
next = false;
break;
}
}
await this._dealOutput(data);
return { code: 0 };
},
async _dealOutput(data) {
let options = {
fileName: "教师导出.xlsx",
};
let header = [
{ key: "id", title: "ID", type: Number, },
{ key: "name", title: "名称", width: 10 },
{ key: "phone", title: "手机号", width: 15 },
{ key: "real_name", title: "账号名称", width: 15 },
{ key: "login_name", title: "账号", width: 22 },
{ key: "nick_name", title: "昵称", width: 22 },
{ key: "school_name", title: "学校", width: 22 },
{ key: "role_name", title: "角色", width: 12 },
{ key: "money", title: "余额", width: 10, type: Number },
{ key: "valid", title: "是否有效", width: 12 },
];
let columns = [];
header.forEach((item, index) => {
let columnItem = {};
if (item?.width) {
columnItem.width = item.width;
}
columns.push(columnItem);
})
options.columns = columns;
options.border = true;
let excelDataBody = [];
data.forEach((item, index) => {
let body = {
id: item.id,
name: item.name,
phone: item.phone,
real_name: item?.admin?.real_name,
login_name: item?.admin?.login_name,
nick_name: item?.admin?.nick_name,
school_name: item?.school?.name ?? "",
role_name: item?.admin?.adminRole?.name ?? "",
money: item.money,
valid: item.valid == 1 ? "有效" : "无效"
};
excelDataBody.push(body);
});
ExcelWriter.outputExcel(header, excelDataBody, options);
}
let params={
pageSize:1000,
page:1,
}
let res = await output(params);