vue3+ts导出excel文件

4 篇文章 0 订阅
1 篇文章 0 订阅

安装

# 安装 export2excel

$ npm install -s export2excel

# 安装 xlxs
$ npm install -s xlxs

# 安装 file-saver
$ npm install -s file-saver

在shims-vue.d.ts文件添加模块声明

declare module '@/vendor/Export2Excel' {
  export function export_table_to_excel(id: string): void
  export function export_json_to_excel(option: any): void
  export function blobDownload(blob: object): void
}

在utils.ts工具文件添加

export function formatTableDataToJsonByKeys<T, K extends keyof T>(data: T[], keys: K[]): T[K][][] {
  return data.map(i => keys.map(key => i[key]))
}

在页面文件引入

import { formatTableDataToJsonByKeys } from '@/lib/utils'
import * as $filters from '@/lib/filters'

使用

    function handleDownload() {
     

      import('@/vendor/Export2Excel').then(excel => {//引入Export2Excel
        const header: string[] = []
        const keys: string[] = []

        state.tableColumns.forEach((column: any) => {//表头label和所属字段
          header.push(column.label)
          keys.push(column.prop)
        
        })
        console.log(header,'header')
        console.log(keys,'keys')

        const data = formatTableDataToJsonByKeys(//使用formatTableDataToJsonByKeys生成excel数据
          state.batteryTests.map((item: any) => {
            return {
              ...item,
               //例如时间(通过这里的 $filters处理,在文章最后说明)或者其他需要特殊处理的数据可以在这里处理,也可以在循环之前将数据处理好
              test_state: formatTestState(item),
              beg_time: $filters.formatDatetime(item.beg_time),
              end_time: $filters.formatDatetime(item.end_time),
              'unit_id,chl_id': item.unit_id + '-' + item.chl_id,
              product_sn_time: $filters.formatDatetime(item.product_sn_time),
            }
          }),
          keys
        )
        excel.export_json_to_excel({
          header,//表头
          data,//表数据
          filename: `本页数据-${Date.now()}`,//导出文件名
        })
      })
    }

处理时间格式:

1、安装dayjs

npm install dayjs --save

2、在工具文件夹里面新建filters.ts文件,抛出自定义方法

import dayjs from 'dayjs'

export function formatDate(time: number | string): string {
  if (!time) return ''
  return dayjs(time).format('YYYY-MM-DD')
}
export function formatDatetime(time: number | string): string {
  if (!time) return ''
  return dayjs(time).format('YYYY-MM-DD HH:mm:ss')
}

3、引入

import * as $filters from '@/lib/filters'

4、使用

 可以参考博客:vue-export2excel 导出表格_俊小张的博客-CSDN博客

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
您可以使用 `xlsx` 库和 `FileSaver.js` 库来实现Vue和Element UI导出Excel文件的功能。以下是一个简单的示例: 1. 首先,安装 `xlsx` 和 `file-saver` 包: ```bash npm install xlsx file-saver ``` 2. 在 Vue 组件中引入所需的库: ```javascript import XLSX from 'xlsx'; import { saveAs } from 'file-saver'; ``` 3. 创建一个方法来导出Excel文件: ```javascript methods: { exportToExcel() { // 创建工作簿和工作表 const workbook = XLSX.utils.book_new(); const worksheet = XLSX.utils.json_to_sheet(this.data); // 将工作表添加到工作簿 XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); // 生成Excel文件的二进制数据 const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); // 将二进制数据转换为Blob对象 const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); // 使用FileSaver.js保存文件 saveAs(blob, 'data.xlsx'); } } ``` 在上面的代码中,`this.data` 是要导出的数据,可以是一个数组或对象。 4. 在模板中添加一个按钮来触发导出操作: ```html <template> <div> <button @click="exportToExcel">导出Excel</button> </div> </template> ``` 这样,当用户点击“导出Excel”按钮时,将会触发 `exportToExcel` 方法,并导出Excel文件。 请注意,为了使上述代码正常工作,您需要在项目中正确引入 `xlsx` 和 `file-saver` 库,并将相关的样式和依赖项加载到您的项目中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值