vue + iview 导出自定义表格数据(不下载插件)

6 篇文章 0 订阅
3 篇文章 0 订阅

前提条件

1、表格数据为json数据
2、本篇实际上与iview无关,本质上是导出页面table,只是数据的结构与iview一样
3、如果要使用需对js中的一些东西稍加改动,大部分不需要,如果数据类型和我这里的一样,那么不用任何修改,直接拷贝拿过去用就行了。

代码奉上

1、html

<template><div></div></template>

2、js

data(){
return{
   columns:[],
   data:[]
}
}
methods:{
    base64(s) {
      return window.btoa(unescape(encodeURIComponent(s)));
    },
    format(s, c) {
      return s.replace(/{(\w+)}/g, function (m, p) {
        return c[p];
      });
    },
        exportData() {
      var uri = "data:application/vnd.ms-excel;base64,";
      var headit =
        '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"><head><meta charset="UTF-8"><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>';

      var bodyit = "";
      var footit = "</table></body></html>";
      var myTabValue = []; //表格二维数组
      // 添加标题
      bodyit +=
        '<tr><td align="center" colspan="' +
        this.columns.length +
        '">' +
        this.filename +
        "</td></tr>";

      // 添加表头
      var ary = [];
      for (var it of this.columns) {
        ary.push(it.title);
      }
      myTabValue.push(ary);
      //添加表格数据
      for (var item of this.data) {
        var lAry = [];
        for (var ite of this.columns) {
          lAry.push(item[ite.key]);
        }
        myTabValue.push(lAry);
      }

      // 渲染表格
      for (var i of myTabValue) {
        bodyit += "<tr>";
        for (var ii of i) {
          bodyit += "<td>" + ii + "</td>";
        }
        bodyit += "</tr>";
      }
      for (var myI of myFo) {
        bodyit +=
          '<tr><td align="left" colspan="' +
          this.columns.length +
          '">' +
          myI +
          "</td></tr>"+"<tr></tr>";
      }
      var template = headit + bodyit + footit;
      var ctx = { worksheet: this.filename, table: template };
      document.getElementById("dlink").href =
        uri + this.base64(this.format(template, ctx));
      document.getElementById("dlink").download = this.filename + ".xls";
      document.getElementById("dlink").click();
    },
}

最后:调用exportData这个函数直接用就ok了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过以下步骤来删除 Vue + iView 表格中的某一行数据: 1. 在表格中添加一个“删除”列,并在该列中添加一个“删除”按钮,例如,可以使用如下代码: ```html <template> <Table :columns="columns" :data="tableData"> <template slot="operations" slot-scope="{row}"> <Button type="error" @click="deleteRow(row)">删除</Button> </template> </Table> </template> <script> export default { data() { return { columns: [ { title: '姓名', key: 'name' }, { title: '年龄', key: 'age' }, { title: '性别', key: 'gender' }, { title: '操作', slot: 'operations', align: 'center' }, ], tableData: [ { name: '张三', age: 18, gender: '男' }, { name: '李四', age: 20, gender: '女' }, { name: '王五', age: 22, gender: '男' }, ], }; }, methods: { deleteRow(row) { const index = this.tableData.indexOf(row); this.tableData.splice(index, 1); }, }, }; </script> ``` 在上面的代码中,我们在表格中添加了一个名为“operations”的插槽,该插槽对应了一个“删除”按钮,当用户点击该按钮时,会触发 `deleteRow()` 方法,该方法会从表格数据源中删除指定的行。 2. 最后,如果你想要删除某一行数据时,弹出一个确认框,让用户确认是否删除,可以使用 iView 的 `Modal` 对话框组件,例如,可以使用如下代码: ```html <template> <Table :columns="columns" :data="tableData"> <template slot="operations" slot-scope="{row}"> <Button type="error" @click="showDeleteConfirm(row)">删除</Button> </template> </Table> </template> <script> import { Modal } from 'iview'; export default { data() { return { columns: [ { title: '姓名', key: 'name' }, { title: '年龄', key: 'age' }, { title: '性别', key: 'gender' }, { title: '操作', slot: 'operations', align: 'center' }, ], tableData: [ { name: '张三', age: 18, gender: '男' }, { name: '李四', age: 20, gender: '女' }, { name: '王五', age: 22, gender: '男' }, ], }; }, methods: { showDeleteConfirm(row) { Modal.confirm({ title: '确认删除', content: `是否删除 ${row.name}?`, onOk: () => { const index = this.tableData.indexOf(row); this.tableData.splice(index, 1); }, }); }, }, }; </script> ``` 在上面的代码中,我们使用了 iView 的 `Modal` 对话框组件,当用户点击“删除”按钮时,会弹出一个确认框,让用户确认是否删除该行数据。如果用户点击“确定”按钮,则会从表格数据源中删除该行数据

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值