前端Vue实现表格数据导出为Excel

目录

一、依赖安装

二、效果展示

2.1、简单数组

2.2、多层数组

三、代码实现

四、前端分页

前言:

  一般将表格数据导出为excel,后端可以实现,因为导出时一般需要导出所有数据,而前端一般只会拿到当前页的数据,有兴趣的可以了解一下前端导出excel的功能。

  参考文章:vue项目中如何将数据导出到excel中_vue将数组导出为excel_cx&lavender的博客-CSDN博客

一、依赖安装

npm install js-export-excel  或者   yarn add js-export-excel

二、效果展示

2.1、简单数组

2.2、多层数组

三、代码实现

<template>
  <div class="box">
    <el-button @click="exportExcel1">导出1</el-button>
    <el-button @click="exportExcel2">导出2</el-button>
  </div>
</template>
 
<script>
import ExportJsonExcel from "js-export-excel";
export default {
  data() {
    return {
      dataTable: [],
      option: {},
      list: {
        getList: [
          {
            id: "1",
            province: "江西",
            city: "赣州",
          },
          {
            id: "2",
            province: "广东",
            city: "深圳",
          },
          {
            id: "3",
            province: "湖南",
            city: "长沙",
          },
          {
            id: "4",
            province: "浙江",
            city: "杭州",
          },
          {
            id: "5",
            province: "河南",
            city: "洛阳",
          },
          {
            id: "6",
            province: "山东",
            city: "青岛",
          },
          {
            id: "7",
            province: "安徽",
            city: "烟台",
          },
        ],
      },
      tableData: [
        {
          name: "地球",
          list: [
            { name: "2011", value: "0" },
            { name: "2012", value: "0" },
            { name: "2013", value: "0" },
            { name: "2014", value: "0" },
          ],
        },
        {
          name: "月球",
          list: [
            { name: "2011", value: "1" },
            { name: "2012", value: "1" },
            { name: "2013", value: "1" },
            { name: "2014", value: "1" },
          ],
        },
        {
          name: "太阳",
          list: [
            { name: "2011", value: "2" },
            { name: "2012", value: "2" },
            { name: "2013", value: "2" },
            { name: "2014", value: "2" },
          ],
        },
      ],
    };
  },
  methods: {
    Ture() {
      //   创建ExportJsonExcel实例对象
      let toExcel = new ExportJsonExcel(this.option);
      //   调用保存方法
      toExcel.saveExcel();
    },
    exportExcel1() {
      const dataList = this.list.getList;
      let dataTable = []; //   dataTable代表excel文件中的数据内容
      if (dataList) {
        for (let i in dataList) {
          let obj = {
            序号: dataList[i].id,
            省份: dataList[i].province,
            城市: dataList[i].city,
          };

          dataTable.push(obj); //   设置excel每列获取的数据源
        }
      }

      this.option.fileName = "省份城市表"; //excel文件名
      //excel文件数据
      this.option.datas = [
        {
          //   excel文件的数据源
          sheetData: dataTable,
          //   excel文件sheet的表名
          sheetName: "sheet",
          //   excel文件表头名
          sheetHeader: ["序号", "省份", "城市"],
          //   excel文件列名
          sheetFilter: ["序号", "省份", "城市"],
          columnWidths:['10','10','20']//excel列宽度设置
        },
      ];
      this.Ture();
    },
    exportExcel2() {
      const dataList = this.tableData;
      let dataTable = []; //   dataTable代表excel文件中的数据内容
      let arr = [];
      if (dataList) {
        let obj;
        for (let i in dataList) {
          for (let y = 0; y < dataList[i].list.length; y++) {
            obj = Object.assign(
              { 姓名: dataList[i].name },
              ...dataList[i].list.map((value) => ({
                [value.name]: value.value,
              }))
            );
          }

          dataTable.push(obj); //   设置excel每列获取的数据源
        }
        for (let i in dataTable[0]) {
          arr.push(i);
        }
      }

      this.option.fileName = "个人信息表"; //excel文件名
      //excel文件数据
      this.option.datas = [
        {
          //   excel文件的数据源
          sheetData: dataTable,
          //   excel文件sheet的表名
          sheetName: "sheet",
          //   excel文件表头名
          sheetHeader: arr,
          //   excel文件列名
          sheetFilter: arr,
        },
      ];
      this.Ture();
    },
  },
};
</script>
 
<style>
</style>

四、前端分页

扩展一下前端用组件快速分页,可做了解。

首先拿到所有数据(drawerData),先展示(drawerList )第一页,进行截取

表格展示的 :data="drawerList"

        this.drawerData = res.result.records;

        this.drawerList = this.drawerData.slice(0, 10);

//========================视图============
 <el-pagination
      @size-change="handleSizeChange2"
      @current-change="handleCurrentChange2"
      :current-page="pageNum"
      :page-sizes="[10, 20, 30, 40]"
      :page-size="pageSize"
       layout="total, sizes, prev, pager, next, jumper"
       :total="drawerData.length">
</el-pagination>
//========================方法==============   
 handleCurrentChange2(pageIndex) {
      var _this = this;
      if (_this.drawerData) {
        if (pageIndex) {
          _this.pageNum = pageIndex;
        }
        _this.drawerList = _this.drawerData.slice(
          (_this.pageNum - 1) * _this.pageSize,
          _this.pageNum * _this.pageSize
        );
      }
    },
handleSizeChange2(val) {
      this.pageSize = val;
    },

备注:pageNum: 1, // 当前页数      pageSize: 10, // 每页条数     total: 6,//总数

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端使用Vue导出表格样式为Excel,可以通过以下步骤实现: 1. 首先,你需要安装并引入`xlsx`和`file-saver`这两个库。`xlsx`用于生成Excel文件,`file-saver`用于保存文件。 ```bash npm install xlsx file-saver ``` 2. 在Vue组件中,你可以创建一个方法来处理导出操作。首先,需要将表格数据转换为Excel数据格式。可以使用`xlsx`库的`utils.json_to_sheet()`方法将JSON数据转换为Excel的Sheet对象。 ```javascript import XLSX from 'xlsx'; import { saveAs } from 'file-saver'; export default { methods: { exportToExcel() { // 获取表格数据 const tableData = this.getTableData(); // 创建一个工作簿 const workbook = XLSX.utils.book_new(); // 将表格数据转换为Sheet对象 const sheet = XLSX.utils.json_to_sheet(tableData); // 将Sheet对象添加到工作簿中 XLSX.utils.book_append_sheet(workbook, sheet, 'Sheet1'); // 生成Excel文件的二进制数据 const excelData = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); // 将二进制数据保存为Excel文件 const blob = new Blob([excelData], { type: 'application/octet-stream' }); saveAs(blob, 'table.xlsx'); }, getTableData() { // 获取表格数据的方法,根据你的具体实现进行编写 } } } ``` 3. 在Vue模板中,可以添加一个按钮或其他触发导出操作的元素,并绑定`exportToExcel`方法。 ```html <template> <div> <table> <!-- 表格内容 --> </table> <button @click="exportToExcel">导出Excel</button> </div> </template> ``` 这样,当用户点击"导出Excel"按钮时,会触发`exportToExcel`方法,将表格数据导出Excel文件并保存到本地。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值