关于vue3:sheetJs导出excel

2次阅读

共计 1301 个字符,预计需要花费 4 分钟才能阅读完成。

这里以 vue+element 为例:
我的项目遇到这样一个需要,将下列表格导出为 excel:

1. 装置 xlxs 依赖

npm i xlsx

次要的导出 excel 的办法有 aoa_to_sheetjson_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 依赖地址和中文文档

正文完
 0