vue3使用xlsx导出json数据为excel表格

官方文档可以看sheetjs

安装

npm install xlsx

使用非常简单
在需要使用的页面引入

import * as XLSX from "xlsx";

要导出的数据需要是一个没有嵌套的对象数组
vue3使用xlsx导出json数据为excel表格_第1张图片

// 随便声明一个结果
let arr=[{name:"小红",age:18},{name:"小明",age:20}]
// 创建一个新的工作簿
const workbook = XLSX.utils.book_new();
// 创建一个新的工作表
const worksheet = XLSX.utils.json_to_sheet(arr);
// 将工作表附加到工作簿,并将工作表命名为students
XLSX.utils.book_append_sheet(workbook, worksheet, "students");
// 导出工作簿,并命名导出文件名为Presidents.xlsx
XLSX.writeFile(workbook, "Presidents.xlsx");

代码示例
vue3使用xlsx导出json数据为excel表格_第2张图片
导出文件结果,下面工作表名称就不截了,图片太长不好看,工作表名就是students
导出结果示例
可以看到虽然导出了,但是上面name和age显然不是我们想要的,我们想要的是“姓名”和“年龄”,使用XLSX.utils.sheet_add_aoa可以向工作表中添加JS数据的数组实现标题重命名

// 向woeksheet工作表中的A1位置添加数据的数组
XLSX.utils.sheet_add_aoa(worksheet, [["姓名", "年龄"]], { origin: "A1" });

更改标题后的结果,可以看到从A1开始数据改变成了刚刚写的数据
更改标题后的结果

// 试试改成其他的
XLSX.utils.sheet_add_aoa(worksheet, [["姓名", "年龄"],["性别","爱好"]], { origin: "B5" });

可以看到从B5改变数据为上面添加的
vue3使用xlsx导出json数据为excel表格_第3张图片
也可以通过设置!cols工作表属性来设置列宽

// 改变A列的宽度为50,改变B列宽度为100
worksheet["!cols"] = [ { wch: 50 },{wch:100} ];

更改列宽后的结果
更改列宽后的结果
总的来说比之前写的乱七八糟的更简单易懂了

你可能感兴趣的:(前端,javascript,前端,vue)