vue导出Excel表格(简单)

一、安装依赖

npm install -S file-saver xlsx
npm install -D script-loader

二、下载文件

在 /src 目录下新建 vendor文件夹,用于存放 Blob.js 和 Export2Excel.js 文件。

百度网盘下载地址
链接: https://pan.baidu.com/s/1efys5Awc5BxMdK71Jy1vKw 提取码: kjns

三、修改Export2Excel.js文件

在这里插入图片描述
如图,将红框中的路径修改你的Blob.js文件实际路径。不然会报错。

四、创建util.js文件用于统一处理export2Excel的数据

export function export2Excel(columns, list, title) {
  require.ensure([], () => {
    const { export_json_to_excel } = require('@/utils/excel/Export2Excel')
    let tHeader = []
    let filterVal = []
    if (!columns) {
      return
    }
    columns.forEach(item => {
      tHeader.push(item.title)
      filterVal.push(item.key)
    })
    const data = list.map(v =>
      filterVal.map(j => {
        let value = v[j]
        let column = columns.find(col => col.key === j)
        const { transform } = column
        if (transform && typeof transform === 'function') {
          value = transform(v[j])
        }
        return value
      })
    )
    export_json_to_excel(tHeader, data, title || '数据列表')
  })
}

五、组件使用

<template>
  <div class="home">
    <button @click="handleExport">导出</button>
  </div>
</template>

<script>
const dataList = [
  {
    key: '1',
    name: 'Brown John',
    sex: 0,
    age: 32,
    tel: '0571-22098909',
    phone: 18889898989,
    address: 'New York No. 1 Lake Park'
  },
  {
    key: '2',
    name: 'Jim Green',
    sex: 1,
    tel: '0571-22098333',
    phone: 18889898888,
    age: 42,
    address: 'London No. 1 Lake Park'
  },
]
const exportColumns = [
  {
    title: '序号',
    key: 'key'
  },
  {
    title: '姓名',
    key: 'name'
  },
  {
    title: '性别',
    key: 'sex',
    transform: (text) => {
      switch (text) {
        case 0:
          return '女生'
          break
        case 1:
          return '男生'
          break
        default:
          return '变态'
          break
      }
    }
  },
  {
    title: '地址',
    key: 'address'
  },
]
import { export2Excel } from '@/utils/util'
export default {
  methods: {
    handleExport () {
      export2Excel(exportColumns, dataList, '表格名称')
    }
  }
};
</script>

参考

参考1
参考2
参考3
导出多级表头
js-xlsx 实现 Excel 文件导出功能

数据流方式(后台生成复杂表格)

    // 档案导出
    exportCard (record) {
      const params = {
        unitSn: record.unitSn,
        userId: record.id
      }
      exportCard(params).then(res => {
        const link = document.createElement('a')
        const blob = new Blob([res], { type: 'application/vnd.ms-excel' })
        link.style.display = 'none'
        link.href = URL.createObjectURL(blob)
        link.setAttribute('download', decodeURI('基础信息—' + record.userName))
        document.body.appendChild(link)
        link.click()
        document.body.removeChild(link)
      })
    }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值