前言:在开发一些管理系统的时候,常常会遇到表格导入导出的问题,总的来说呢,代码模板也挺固定的,仅以此博客作为记录以供参考
html部分
html
<Button @click="downLoadPlan" type="primary">导出方案</Button>
ts部分
typescript
<script lang="ts" setup>
import * as XLSX from 'xlsx';
const downLoadPlan = () => {
// 这里data是我们要导出的数据
// 因为这里导出的有三列,所以data的格式是一个包含多个[数据1,数据2,数据3]的数组
// 在 data数组的开头插入表头['列1', '列2', '列3']
data.unshift(['列1', '列2', '列3']);
// 创建一个新的工作簿对象
const wb = XLSX.utils.book_new();
// 将 data 数组转换为工作表对象
const ws = XLSX.utils.aoa_to_sheet(data);
// 将工作表添加到工作簿中,命名为 'Sheet1'
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
// 将工作簿转换为 Excel 格式的字节数组
const excelBuffer = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
// 创建一个 Blob 对象,类型为 Excel 文件
const blob = new Blob([excelBuffer], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
});
// 为 Blob 对象创建一个 URL
const url = URL.createObjectURL(blob);
// 创建一个 a 元素,并设置下载链接和文件名
const link = document.createElement('a');
link.href = url;
link.download = 导出文件.xlsx';
// 模拟点击链接,触发文件下载
link.click();
// 释放 URL 对象
URL.revokeObjectURL(url);
};
</script>