vue element ui Excel导入导出功能 (vue-xlsx-table)

今天BiKABi整理一下之前写的导入和导出功能的笔记,这个导入是把Excel导入到表格中,导出就比较简单,就是个下载的地址而已,下面直接上代码
导入前
导入后

导入功能

1.首先我们需要安装一个插件vue-xlsx-table(npm安装插件的地址
2.把下载好的插件引入挂载,这里就不多说怎么去引入挂载,地址文档有
3.这里我就展示2种,一种输入框一种下拉框
4.后面的操作看你自己的需求,我这个是可以点击新增一条数据的表,感兴趣你可以去看下我另一篇博客,上面写的很清楚 (element ui 新增一条表

HTML部分

1.下拉框的定义和掉接口我就不展示了,根据自己需求加

<vue-xlsx-table @on-select-file="handleSelectedFile"><i class="el-icon-download"></i> 导入</vue-xlsx-table>
<el-table
        :data="detailedList"
        border
        @selection-change="handleSelectionChange"
        style="margin: 10px 0 0 0;"
      >
        <el-table-column type="selection" fixed align="center"></el-table-column>
        <el-table-column label="料号" align="center" prop="picSource">
          <template slot-scope="scope">
            <span v-if="scope.row.show">
              <el-input size="mini" placeholder="请输入内容" v-model="scope.row.partNo"></el-input>
            </span>
            <span v-else>{{scope.row.partNo}}</span>
          </template>
        </el-table-column>
        <el-table-column label="版次" align="center" width="100">
          <template slot-scope="scope">
            <span v-if="scope.row.show">
              <el-select v-model="scope.row.picVersion" placeholder="请选择" style="width:100%">
                <el-option
                  v-for="item in options6"
                  :key="item.dictValue"
                  :label="item.dictLabel"
                  :value="item.dictValue"
                ></el-option>
              </el-select>
            </span>
            <span v-else>
              <el-select
                disabled
                v-model="scope.row.picVersion"
                placeholder="请选择"
                style="width:100%"
              >
                <el-option
                  v-for="item in options6"
                  :key="item.dictValue"
                  :label="item.dictLabel"
                  :value="item.dictValue"
                ></el-option>
              </el-select>
            </span>
          </template>
        </el-table-column>
        <el-table-column label="操作" fixed="right" align="center" width="200">
          <template slot-scope="scope">
            <el-button
              icon="el-icon-check"
              type="success"
              size="mini"
              @click="edit(scope.row,scope.$index)"
            >{{scope.row.show?'保存':"修改"}}</el-button>
            <el-button
              type="danger"
              size="mini"
              icon="el-icon-delete"
              @click="delect(scope.$index)"
            >删除</el-button>
          </template>
        </el-table-column>
      </el-table>

js部分

1.由于我们的Excel表头肯定是中文的,所以我们需要把名字转一下传给我们的table表
2.当然,我们的下拉框也要再从新赋值一下,这样才能对应上接口的中的数据,并选中
3.如果是联合新增一条数据的写法就需要用concat方法去添加,如果是直接导入就可以直接复制用=

// Excel导入
    handleSelectedFile(convertedData) {
      let { header: tableHeader, body: tableData } = convertedData;
      const arr = convertedData.body.map((item, index) => {
        let list1 = this.options6.filter(function(item1) {
          if (item1.dictLabel == item.版次) {
            return item1;
          }
        });
        return {
          partNo: item.料号,
          gradeName: item.品名,
        };
      });
      this.detailedList = this.detailedList.concat(arr);
      this.formData.bomList = this.formData.bomList.concat(arr);
    },

导出功能

HTML部分

<el-button icon="el-icon-download" type="warning" @click="importData">导出Excel</el-button>

JS部分

1.这里的导出我是直接调接口导出,this.$apiUrl.export这个是我封装的一个接口的写法而已,换成你自己的地址就可
2.如果调用接口返回的是一个接口路径直接用window.location.href就可,如果是返回的一个值,就需要一个接口去拼接,这样就比较安全,这个都根据后台怎么写去改的

//导出Excel
    async importData() {
      try {
        const res = await this.$postRequest.post(this.$apiUrl.export);
        console.log(res);
        if (res.code === 0) {
          window.location.href = this.$baseURL+"/common/download?fileName=" + res.msg +"&delete=" +true;
        } else {
          this.$message.error(msg);
        }
      } catch (e) {}
    },

这篇文章就分享到这,如有错误,请斧正,希望对你有帮助

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
您可以使用以下步骤来导出 Vue Element UI 表格数据: 1. 首先,确保您已经安装了 Element UI 和相关的依赖。您可以通过以下命令来安装 Element UI: ```bash npm install element-ui ``` 2. 在您的 Vue 组件中,导入并注册 Element UITable 组件。在需要使用表格的地方,使用 `<el-table>` 标签包裹数据。 ```vue <template> <div> <el-button type="primary" @click="exportTable">导出表格</el-button> <el-table :data="tableData"> <!-- 表格列定义 --> </el-table> </div> </template> <script> import { ElTable, ElTableColumn } from 'element-ui'; export default { components: { ElTable, ElTableColumn, }, data() { return { tableData: [ // 表格数据 ], }; }, methods: { exportTable() { // 导出表格逻辑 }, }, }; </script> ``` 3. 在 `exportTable` 方法中,编写导出表格的逻辑。您可以使用第三方库,如 `xlsx` 或 `file-saver` 来实现导出功能。以 `xlsx` 为例,您可以按照以下步骤进行安装和使用: - 安装 `xlsx` 和 `file-saver`: ```bash npm install xlsx file-saver ``` - 在导出表格的方法中使用 `xlsx` 和 `file-saver`: ```javascript import XLSX from 'xlsx'; import { saveAs } from 'file-saver'; exportTable() { const wb = XLSX.utils.table_to_book(this.$refs.table.$el); const wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' }); saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'table.xlsx'); }, ``` 以上代码将使用 `xlsx` 将表格数据转换为工作簿,然后使用 `file-saver` 将工作簿保存为名为 `table.xlsx` 的文件。 请注意,您需要根据您的实际项目结构和需求进行适当的调整。这只是一个基本的示例,您可能需要根据您的表格结构和数据格式进行更多的自定义和处理。 希望这可以帮助到您!
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值