封装Excel文件导出功能,之前发的文件名是固定的,这次添加了自定义文件名功能,可自己填写文件名
效果图
<template>
<el-button style="float: right; padding: 3px 5px" type="primary" @click="exportData">一键导出数据</el-button>
</template>
<script setup lang="ts">
import * as XLSX from 'xlsx'
import { ElMessage, ElMessageBox } from 'element-plus'
const props = defineProps({
data: {
type: Array,
required: true
},
})
const exportData = (): void => {
ElMessageBox.prompt('输入一个Excel表名用于导出数据表', '导出数据表', {
confirmButtonText: '确定',
cancelButtonText: '取消',
inputErrorMessage: 'Invalid Email',
})
.then(({ value }) => {
//1.创建一个excel工作簿
let excelBook = XLSX.utils.book_new()
//2.创建一个excel工作表
let excelWorkSheet = XLSX.utils.json_to_sheet(props.data)
//3.将excel工作表添加到excel工作簿中
XLSX.utils.book_append_sheet(excelBook, excelWorkSheet)
//4.下载excel文件
XLSX.writeFile(excelBook, value + '.xlsx', {
bookType: 'xlsx',
})
})
.catch(() => {
ElMessage({
type: 'info',
message: '你已取消导出数据表',
})
})
}
</script>