前情提要:后端不想做表格导出,无奈只能自己写了,还得是配element、antd-vue,好烦呐
一个一个页面写单独的方法导出也太low了,决定封装一下
不多bb,直接上源码
utils.ts
/**
* 导出 Excel 文件
* @param opts 导出选项
* @example
* exportXlex({
* tableHeaderDom: document.querySelector('.a-table-box .ant-table-thead'),
* columns: [],
* dataSource: [],
* fileName: 'xxxx_${dayjs().format('YYYYMMDD')}.xlsx'
*/
import 'dayjs' from 'dayjs';
import * as XLSX from 'xlsx';
function exportXlex (opts: ExportXlexOptions) {
let workbook = null;
try {
workbook = XLSX.utils.table_to_book(
opts.tableHeaderDom,
opts.table_to_book_options || {
raw: true, cellDates: true }
);
} catch {
workbook = XLSX.utils.book_new();