欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > vue页面中,通过接口获取json返回值,并导出到Excel中;

vue页面中,通过接口获取json返回值,并导出到Excel中;

2025/4/19 9:57:30 来源:https://blog.csdn.net/zhijiandedaima/article/details/140012065  浏览:    关键词:vue页面中,通过接口获取json返回值,并导出到Excel中;

vue页面中,通过接口获取json返回值,并导出到Excel中;

注意事项:

  • 1、json中的key翻译成对应标题;
  • 2、过滤掉json中不需要的字段;

1、接口返回的json:

{"errcode": 0,"data": {"total": 3,"items": [{"hospital": "医院1","department": "心内科","num": 10},{"hospital": "医院2","department": "心内科","num": 4},{"hospital": "医院3","department": "体检","num": 3}]},"errmsg": "成功"
}

2、安装 xlsx 库:

npm install xlsx

3、定义方法:

<template><div><button @click="handleExportXls">导出Excel</button></div>
</template><script>
import * as XLSX from 'xlsx'export default {data() {return {titleMapping: { // key映射成对应的titlehospital: '医院',department: '科室',num: '数量',},excludedKeys: ['num'], // 需要过滤的key};},methods: {handleExportXls() {console.log('导出到Excel')try {const res= await axios.get('YOUR_API_URL');if (res.errcode == 0) {console.log(res.data.items)var chartList = res.data.itemsconsole.log('数据长度:' + chartList.length)const transformedData = res.data.items.map((item) => {const transformedItem = {}for (const key in item) {this.excludedKeys.forEach((key) => delete item[key]) //过滤掉不需要的keyif (key in this.titleMapping) {//key映射成对应的标题transformedItem[this.titleMapping[key]] = item[key]}}return transformedItem})this.exportToExcel(transformedData)}} catch (error) {console.error(error);}},exportToExcel(listData) {const worksheet = XLSX.utils.json_to_sheet(listData)const workbook = XLSX.utils.book_new()XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1')const excelBuffer = XLSX.write(workbook, {bookType: 'xlsx',type: 'array',})const data = new Blob([excelBuffer], { type: 'application/octet-stream' })const fileName = '报表.xlsx'if (window.navigator && window.navigator.msSaveOrOpenBlob) {// For IEwindow.navigator.msSaveOrOpenBlob(data, fileName)} else {// For other browsersconst url = window.URL.createObjectURL(data)const link = document.createElement('a')link.href = urllink.download = fileNamelink.click()window.URL.revokeObjectURL(url)}},}
};
</script>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词