共计 1301 个字符,预计需要花费 4 分钟才能阅读完成。
这里以 vue+element 为例:
我的项目遇到这样一个需要,将下列表格导出为 excel:
1. 装置 xlxs 依赖
npm i xlsx
次要的导出 excel 的办法有 aoa_to_sheet
和json_to_sheet
两种,这里我次要介绍下后者,次要导出流程如下:
const XLSX = require("xlsx")
var wb = XLSX.utils.book_new()
//arr 就是咱们所导出的数据
let fdXslxws = XLSX.utils.json_to_sheet(arr)
XLSX.utils.book_append_sheet(wb, fdXslxws, 'sheet1')
XLSX.writeFile(wb, "测试.xlsx")
2.json_to_sheet
的应用,简略来说就是 json 数据导出 excel 数据
依据官网所说,最初所须要的数据就是这个格局,即为上文所说的arr
[
{
"日期": "2016-05-02",
"姓名": "王小虎",
"地址": "北京"
},
{
"日期": "2016-05-02",
"姓名": "张三",
"地址": "北京"
},
{
"日期": "2016-05-02",
"姓名": "李四",
"地址": "上海"
}
]
故,只须要将咱们 data 中的 table 数据转换为此类格局即可。
残缺代码如下:
<script>
const XLSX = require("xlsx")
export default {data() {
return {
tableData: [{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}],
tableHeader: [
{
title: '日期',
map: 'date'
},
{
title: '姓名',
map: 'name'
},
{
title: '地址',
map: 'address'
},
]
}
},
methods: {exportExcel() {var wb = XLSX.utils.book_new()
let arr = []
let newHeaderObj = {}
this.tableHeader.map(item => {newHeaderObj[item.map] = item.title
})
this.tableData.map((el, idx) => {let obj = {}
for (let x in newHeaderObj) {obj[newHeaderObj[x]] = el[x]
}
arr.push(obj)
})
let fdXslxws = XLSX.utils.json_to_sheet(arr)
XLSX.utils.book_append_sheet(wb, fdXslxws, 'sheet1')
XLSX.writeFile(wb, "测试.xlsx")
}
}
}
</script>
也有按需合并单元格等诸多弱小性能,感兴趣的能够去官网看下!
以下附上 xlsx
依赖地址和中文文档
正文完