本文介绍最简单的用法
你是否曾经为导出Excel文件而头疼?别担心,今天让我带你一步一步变成Excel导出大师!🧙♂️
🧰️ 第一步:像开启超级能力一样,装上xlsx
工具
没了锤子,哪有铁匠?输入下面的命令,给自己加个装备:
npm install xlsx -S
✍️️ 第二步:给表格起个响亮的名字
你喜欢别人叫你小明还是叫大帅哥?列名也是一样的,我们先定义下:
const columns = [
{ title: '姓名', key: 'name' },
{ title: '年龄', key: 'age' },
{ title: '城市', key: 'city' },
];
🎉️ 第三步:你我他,都要足够空间
别把字挤在一起,给它们点空间呼吸:
const getWordCh = (val = '') => {
let len = 0;
for (let i = 0; i < val.length; i++) {
if (val.charCodeAt(i) > 127 || val.charCodeAt(i) === 94) {
len += 2;
} else {
len++;
}
}
return len;
};
🎁️ 第四步:包装成最美的礼物
最后一步,把这一切整合成一个漂亮的Excel文件:
import * as xlsx from "xlsx";
const exportExcel = (dataSource, columns, filename) => {
const ws_data = [columns.map(col => col.title)];
dataSource.forEach(row => {
ws_data.push(columns.map(col => row[col.key]));
});
const ws = xlsx.utils.aoa_to_sheet(ws_data);
// 设置列的宽度
const colWidths = columns.map(col => {
let maxLen = getWordCh(col.title); // 最初的长度是列名的长度
dataSource.forEach(row => {
const len = getWordCh(row[col.key]?.toString()); // 转化为字符串避免数字类型引起的问题
if (len > maxLen) maxLen = len;
});
return { wch: maxLen };
});
ws['!cols'] = colWidths;
const wb = xlsx.utils.book_new();
xlsx.utils.book_append_sheet(wb, ws, 'Sheet1');
xlsx.writeFile(wb, filename);
};
// 例子来啦!
const tableData = [
{ name: '小明', age: 18, city: '北京' },
{ name: '小红', age: 22, city: '上海' },
];
exportExcel(tableData, columns, '朋友们的信息.xlsx');
🥳️ 成功啦!
快去试试,变成你身边的Excel大师吧! 🚀