需求
将表格数据或者其他形式的数据下载为excel文件
技术栈
Vue3、ElementPlus、
实现
1、安装相关的库
- 下载xlsx 和 file-saver 库
npm install -S file-saver
npm install -S xlsx
- 引入XLSX库和FileSaver库
import XLSX from 'xlsx';
import FileSaver from 'file-saver';
2、添加导出按钮
- 需要一个“导出”按钮,并给它绑定一个点击事件
(1)点击该按钮可以将表格的数据下载为excel文件;
(2)关于按钮的图标可以引用elementplus里的下载图标 - 另外,可以添加触发提示,告知用户可以进行数据下载
关于触发提示可以引用elementplus里面的el-tooltip组件 - 大致效果如下:
- 导出按钮、触发提示、表格的包含关系如下:
- 相关代码:
<!-- 表格 -->
<div class="TopCourse">
<div class="navTop">
<!-- 触发提示 -->
<el-tooltip
class="box-item"
effect="dark"
content="下载全部数据"
placement="top-start"
>
<!-- 下载按钮 -->
<el-button type="primary" :icon="Download" @click="userExport" />
</el-tooltip>
</div>
<!-- 表格 -->
<el-table
id="myTable"
:data="tableData"
style="width: 95%"
:header-cell-style="{ 'text-align': 'center' }"
:cell-style="{ 'text-align': 'center' }"
>
<el-table-column prop="index" label="No." />
<el-table-column prop="ID" label="ID" />
</el-table>
</div>
3、函数:将数据下载为excel文件
- 使用 SheetJS 库将表格数据转换为 Excel 文件格式;
- 使用 file-saver 库将生成的 Excel 文件保存到本地
// tableDataAllL:指excel数据的全部汇总(根据实际情况自己去补充)
var tableDataAll = [];
// 将数据下载为excel文件
function userExport() {
const worksheet = XLSX.utils.json_to_sheet(tableDataAll);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");
const excelBuffer = XLSX.write(workbook, {
bookType: "xlsx",
type: "array",
});
const blob = new Blob([excelBuffer], {
type: "application/vnd.ms-excel",
});
FileSaver.saveAs(blob, "tableDataAll"); // 下载文件 文件名
}
- 以上函数可以直接引用,修改对应的部分即可