vue3中使用xlsx实现表格导出

首先 npm i  xlsx

然后我在这里封装了一个通用方法

import * as XLSX from 'xlsx'

/**
 * @description: 导出excel
 * @param {any} dataList
 * @param {Array} fields
 * @param {Array} headers
 * @param {string} fileName 需要加后缀名 eg: 'test.xlsx'
 * @param {string} sheetName
 * @return {*}
 */
export function exportExcel(dataList: any, fields: Array<string>, headers: Array<string> = [], fileName: string = 'Excel.xlsx', sheetName: string = 'Sheet') {
  let data = new Array()
  if (!Array.isArray(dataList)) return console.warn('dataList is not an array type')
  // if (!Array.isArray(fields)) return console.warn('fields is not an array type')
  // if (!Array.isArray(headers)) return console.warn('headers is not an array type')
  
  data = dataList.map((obj) => {
    return fields.map((field) => {
      return obj[field]
    })
  })
  if (headers.length > 0) {
    data.splice(0, 0, headers)
  } else {
    // 将headers设置为英文字段表头
    data.splice(0, 0, fields)
  }
  const ws = XLSX.utils.aoa_to_sheet(data) // 创建工作表
  const wb = XLSX.utils.book_new() // 创建工作簿

  // 隐藏表头
  // let wsrows = [{ hidden: true }]
  // ws['!rows'] = wsrows // ws - worksheet

  XLSX.utils.book_append_sheet(wb, ws, sheetName) // 将工作表添加到工作簿中
  XLSX.writeFile(wb, fileName) // 导出文件
}

下面是使用示例

import { exportExcel } from '@/utils/export'
const tableList = ref<CarData[]>([
    {
        vehicle: '车辆A',
        company: '企业1',
        jurisdiction: '辖区1',
        trips: 5
    },
    {
        vehicle: '车辆B',
        company: '企业2',
        jurisdiction: '辖区2',
        trips: 10
    },
    {
        vehicle: '车辆C',
        company: '企业1',
        jurisdiction: '辖区1',
        trips: 8
    },
    {
        vehicle: '车辆D',
        company: '企业3',
        jurisdiction: '辖区3',
        trips: 3
    },
    {
        vehicle: '车辆E',
        company: '企业2',
        jurisdiction: '辖区2',
        trips: 7
    }
])
//导出表格内容
const handleExport = () => {
    console.log('导出');
    var newTableDate = tableList.value
    const fields = ['vehicle', 'company', 'jurisdiction','trips']
    const headers = ['车辆', '所属企业', '所属区域','通行次数']
    exportExcel(newTableDate, fields, headers, '事件记录.xlsx')
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Vue使用XLSX导出嵌套表格,您需要安装和导入XLSX插件。XLSX插件支持将数据导出为Excel文件。以下是一些步骤: 1. 安装XLSX插件: ``` npm install xlsx ``` 2. 在Vue组件导入XLSX: ``` import XLSX from 'xlsx' ``` 3. 创建一个方法来导出表格: ``` exportTable() { const wb = XLSX.utils.book_new() // 创建一个名为“Sheet1”的工作表 const ws1 = XLSX.utils.json_to_sheet(this.tableData) // 创建一个名为“Sheet2”的工作表 const ws2 = XLSX.utils.json_to_sheet(this.nestedTableData) // 将工作表添加到工作簿 XLSX.utils.book_append_sheet(wb, ws1, 'Sheet1') XLSX.utils.book_append_sheet(wb, ws2, 'Sheet2') // 将工作簿转换为二进制文件 const wbout = XLSX.write(wb, {bookType: 'xlsx', type: 'binary'}) // 下载Excel文件 saveAs(new Blob([s2ab(wbout)], {type: 'application/octet-stream'}), 'table.xlsx') } ``` 在这个例子,我们创建了两个工作表(`ws1`和`ws2`),并将它们添加到工作簿。我们使用`XLSX.write`方法将工作簿转换为二进制文件,然后将其下载到本地计算机。 4. 创建一个辅助函数`s2ab`,用于将字符串转换为ArrayBuffer: ``` function s2ab(s) { const buf = new ArrayBuffer(s.length) const view = new Uint8Array(buf) for (let i=0; i<s.length; i++) view[i] = s.charCodeAt(i) & 0xFF return buf } ``` 这个函数将字符串转换为ArrayBuffer,以便我们可以将其下载为Excel文件。 5. 添加一个按钮或其他触发器,以调用`exportTable`方法: ``` <button @click="exportTable">Export Table</button> ``` 以上是使用XLSX导出表格嵌套表格的基本步骤。您可以根据需要修改代码,以适应您的应用程序需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端_彭于晏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值