vue3 前端导出excel表格
可爱的秋秋啊 2024-07-04 13:03:03 阅读 77
1、前端直接导出excel
xlsx安装
<code>npm install --save xlsx file-saver
xlsx引入
// 局部引入
import * as XLSX from 'xlsx'
import FileSaver from 'file-saver'
// 在main.js中引入XLSX
import XLSX from 'xlsx'
Vue.use(XLSX)
导出函数定义
// XLSX需要npm 安装后全局或者局部引入后使用
// 导出Excel
const exportExcel = () => {
const xlsxParams = { row: true }
// 根据表格导出 可以根据json数据导出 json_to_sheet
const wb = XLSX.utils.table_to_book(
document.querySelector('#out-table'),
xlsxParams
)
// 写入
const wbout = XLSX.write(wb, {
bookType: 'xlsx',
bookSST: true,
type: 'array'
})
try {
FileSaver.saveAs(
new Blob([wbout], { type: 'application/octet-stream' }),
'物料库存信息.xlsx'
)
} catch (e) {
if (typeof consloe !== 'undefined') {
ElMessage.error({
message: e.wbout,
type: 'error'
})
}
}
return wbout
}
注意:如果导出的表格数据量繁多,我们可以在里面添加延时函数进行导出
2、调用后端接口导出excel
<code>// 引入axios
import axios, { AxiosRequestConfig } from "axios"
// 导出
const exportExcels=()=>{
if (formData.uuid != '' || formData.uuid != 'undefined') {
axios({
url: '/pm/pmEmployeeEvaluation/exportExcel',
method: 'post',
responseType: 'blob', // 设置响应类型为 blob
data: {
uuid: formData.uuid // 根据需要传递的参数进行调整
}
})
.then(res => {
const blob = new Blob([res], { type: 'application/vnd.ms-excel;charset=UTF-8' });
const fileName = "绩效考核.xlsx"
const url = window.URL.createObjectURL(blob)
const link = document.createElement("a")
link.href = url;
link.setAttribute("download", fileName);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(url);
}).catch(error => {
console.error('Error:', error);
});
// const fileUrl = "http://10.1.22.31:9771/pm/pmEmployeeEvaluation/notoken/exportExcel?uuid=" + formData.uuid; // 文件的URL
// window.location.href = fileUrl;
}else{
ElMessage('当前暂无excel导出!!!')
}
}
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。