vue3实现导出报表至excel(前端主导)

一、安装xlsx库和file-saver 
npm install xlsx
 二、导出文件位置
<template>
  <div></div>
</template>
<script setup lang="ts">
import { ref} from 'vue';
import * as XLSX from 'xlsx';
import { exportOrderData } from '@/api/root/statement/leaseReport';

const formVisible = ref(false);
const exportList = ref([]); // 导出列表
const exportData = ref([]); // 导出的数据

const exportLease = async () => {
    const { data: result } = await exportOrderData({
      per_page: '0',
      order_type: '2',
    });
    exportList.value = result?.data ?? [];
    exportData.value = [];
    // 导出数据结构构造
    exportList.value.forEach((item) => {
      item.order_goods_data.forEach((key) => {
        exportData.value.push({
          order_sn: item.order_sn,
          goods_name: key.goods_name || '/',
        });
      });
    });
    // 导出表头设计
    const head = {
      order_sn: '订单号',
      goods_name: '产品名称',
    };
    // 表头数据切换
    const list = exportData.value.map((item) => {
      const obj = {};
      for (const k in item) {
        if (head[k]) {
          obj[head[k]] = item[k];
        }
      }
      return obj;
    });
    // 创建工作表
    const data = XLSX.utils.json_to_sheet(list);
    // 列宽
    const cloWidth = Array(26).fill({ wch: 20 });
    data['!cols'] = cloWidth;
    // 创建工作簿
    const wb = XLSX.utils.book_new();
    // 将工作表放入工作簿中
    XLSX.utils.book_append_sheet(wb, data, 'data');
    // 生成文件并下载
    XLSX.writeFile(wb, '购买报表.xlsx');
    setTimeout(() => {
      formVisible.value = false;
    }, 1000);
};
</script>
<style lang="less" scoped></style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值