这里以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
依赖地址和中文文档