Vue项目导出Excel组件

本文详细介绍了一个用于下载表格中选中数据的Download组件的使用方法。该组件支持自定义下载请求地址、请求方法、请求参数字段名及值等功能,适用于前端开发场景。

Download组件使用方法

如果你开发的功能模块中有需要用到选中表格中的一个或多个数据进行下载这个功能,可以直接通过
import Download from '@/components/common/Download.vue'引入<Download />组件使用

Download组件目前只支持以下参数,后期根据功能需求再添加

Download参数说明

参数说明类型可选值默认值
action必需,下载请求地址String--
method表单请求方法String“POST/GET”POST
params-filed请求参数字段名String--
params-val请求参数值Any--
<template>
  <form 
    :action="action"
    :method="method"
    ref="submit"
    class="download-form">
    <input v-model="paramsVal" :name="paramsFiled" readonly />
    <div class="submit-btn">
      <i class="el-icon-download"></i>
      <input type="submit" :value="title">
    </div>
  </form>
</template>

<script> 
export default {
  props:{
    action:{
      type: String,
      required: true
    },
    method:{
      type: String,
      default: "POST"
    },
    paramsFiled:{
      type: String,
    },
    paramsVal:{
      type: String
    },
    title:{
      type: String,
      default: '下载'
    }
  },
  methods:{
    // 选择下载事件处理
    handleSelectedDownload(){
      const form=this.$refs.submit
      form.addEventListener('submit',(e)=>{
        if(!this.paramsVal){
          e.preventDefault()
          this.$message.warning('请至少勾选一项数据')
        }
      })
    },
  },
  mounted(){
    this.handleSelectedDownload()
  }
}
</script>

<style lang="less" scoped>
.download-form{
  >input{
    display: none;
  }
  .submit-btn{
    margin-top: 0;
    width: 100px;
    text-align: center;
    border-radius: 3px;
    background-color: #67c23a;
    color: #fff;
    height: 30px;
    line-height: 30px;
    i{
      font-size: 14px;
    }
    input{
      outline: none;
      border: none;
      background-color: #67c23a;
      color: #fff;
    }
  }
}
</style>
### 实现 Vue.js 中导出 Excel 文件 在 Vue.js 项目中实现导出 Excel 功能有两种常见方法:一种是使用 `ExcelJS` 库,另一种则是通过 `Export2Excel` 工具。 #### 使用 ExcelJS 导出 Excel 文件 为了利用 `ExcelJS` 创建并导出 Excel 文档,在组件内需先引入此库: ```javascript import ExcelJS from 'exceljs'; ``` 之后可按照如下方式构建工作簿对象,并向其中添加数据表单以及设置样式等内容[^1]。 ```javascript export default { methods: { exportToExcel() { const workbook = new ExcelJS.Workbook(); let worksheet = workbook.addWorksheet('Sheet Name'); // 添加一些列头 worksheet.columns = [ { header: 'ID', key: 'id', width: 10 }, { header: 'Name', key: 'name', width: 32 } ]; // 插入行数据 worksheet.addRow({ id: 1, name: "John Doe" }); worksheet.addRow({ id: 2, name: "Jane Smith" }); // 将文件保存为 .xlsx 并触发下载 workbook.xlsx.writeBuffer().then((data) => { var blob = new Blob([data], { type: 'application/octet-stream' }); FileSaver.saveAs(blob, 'example.xlsx'); // 需要安装 file-saver 来处理浏览器端的文件保存操作 }) } } } ``` 需要注意的是,上述代码片段中的 `FileSaver` 是用于帮助实现在客户端直接保存二进制流到本地磁盘上的工具包;因此还需要额外安装它来完成整个流程。 #### 利用 Export2Excel 进行简单快速的数据导出 对于只需要基本功能的应用场景来说,采用 `Export2Excel` 可能更加便捷高效。下面给出一段简单的例子说明怎样借助这个插件轻松达成目的[^2]。 首先定义好待导出的数据源结构形式: ```json [ ["姓名", "年龄"], ["张三", 28], ["李四", 24] ] ``` 接着编写相应逻辑调用函数执行实际转换过程: ```javascript // 假设 raw 数据已经准备好 let tHeader = ['姓名', '年龄']; // 表格头部标题数组 let filterVal = ['name', 'age']; // 对应于 JSON 键名列表 this.downloadExl(tHeader,filterVal,raw,'人员信息'); downloadExl(tHeader, filterVal, data, filename){ require.ensure([], () => { const { export_json_to_excel } = require('@/vendor/Export2Excel'); // 引入导出模块 const list = data; const data = this.formatJson(filterVal, list); export_json_to_excel(tHeader, data, filename); // 调用导出接口 }) } formatJson(filterVal, jsonData) { return jsonData.map(v => filterVal.map(j => v[j])) }, ``` 以上两种方案各有优劣之处,可以根据项目的具体需求选择合适的方式来进行开发。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值