vue3 导出Excel TypeScript

npm install xlsx

import * as XLSX from 'xlsx';

/**
 * 导出到Excel
 * @param data - 用于导出的表头为属性的数组 例如:[{姓名: "123", 住址: "456"}]
 * @param fileName - 导出文件命名
 * @param sheetName - 指定sheet
 */
export default (data: any[], fileName = 'fileName.xlsx', sheetName = 'sheet1') => {
  const jsonWorkSheet = XLSX.utils.json_to_sheet(data);

  const workBook = {
    SheetNames: [sheetName], // 指定有序 sheet 的 name
    Sheets: {
      [sheetName]: jsonWorkSheet // 表格数据内容
    }
  };

  return XLSX.writeFile(workBook, fileName); // 向文件系统写出文件
};

import Export2Excel from '@/utils/Export2Excel';

const tableData = reactive<TableType[]>([]);

const tableColumns: DataTableColumns<TableType> = [
  {
    title: '姓名',
    key: 'name'
  },
  {
    title: '住址',
    key: 'address'
  }
]

function exportExcel(){

  // 将tableColumns转化为 { name:'姓名', address: '住址' }
   const excelKeyToName: { [x: string]: string } = {};
   tableColumns.forEach(v => {
     excelKeyToName[v.key] = v.title;
   });

  // 将tableData转化为 [{ '姓名': '123', '住址': '456' }]
  const data = tableData.map(item => {
    const newItem: { [x: string]: string | { pageindex: number; pagesize: number } | undefined } = {};
    Object.keys(item).forEach(key => {
      if (excelKeyToName[key]) {
        newItem[excelKeyToName[key]] = item[key as keyof TableType];
      }
    });
    return newItem;
  });

    // 使用导出的方法
  Export2Excel(data, '导出.xlsx');
}

参考滑动验证页面

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值