导出数据为Excel表格

整理一下之前做的功能,导出Excel。

参考文章

        文章一:如何在 Vue 中导出数据至 Excel 表格 - 知乎

        文章二:Vue3中导入导出Excel_vue3导出xlsx_疆~的博客-CSDN博客

        (建议文章一和文章二相互辅助,当然参考更多文章更好~)

效果如图:

 未对表头数据进行转换:

 对表头数据进行转换后:

 

接下来是实现步骤:

首先创建项目,这里演示使用的是Vue2 + ElementUi实现的。(具体的搭建步骤可查看一下文章)

传送门:Vue2.x+ElementUI搭建项目_Greg_Zhong的博客-CSDN博客

项目创建完成后,安装 xlsx      (具体解释可参考文章一和文章二~)

npm install -S xlsx

安装完成后,实现 template 部分

代码如下:(按钮类型可自行选择)

<template>
  <!-- 导出excel -->
  <el-button
    type="warning"
    @click="outExcle"
  >导出Excel</el-button>
</template>

然后是 js 部分

代码如下:(这里展示的是模拟后端数据返回后,对表头数据转换为中文后再将其导出~)

<script>
//这里使用的是按需引入
import * as xlsx from "xlsx";
export default {
  data() {
    return {
      // 测试数据,模拟的是后台返回的数据
      items: [
        { name: "谢国庆", age: 29, phone: "13697653219" },
        { name: "吕小果", age: 25, phone: "13235789213" },
        { name: "宋阿美", age: 27, phone: "13756776977" },
        { name: "蒋铁柱", age: 33, phone: "15003373377" },
      ],
    };
  },
  methods: {
    outExcle() {
      //表头数据转换
      const changeTableHead = (
        tableData = [],
        // 表头数据转换,可根据需要更改
        fieldName = {
          name: "姓名",
          age: "年龄",
          phone: "电话号码",
        }
      ) => {
        const list = tableData.map((item) => {
          const obj = {};
          for (const k in item) {
            if (fieldName[k]) {
              obj[fieldName[k]] = item[k];
            }
          }
          return obj;
        });
        return list;
      };

      //表头数据切换,即把英文名字改为中文名字
      const list = changeTableHead(this.items);
      // 创建工作表
      const data = xlsx.utils.json_to_sheet(list);
      // 创建工作簿
      const wb = xlsx.utils.book_new();
      // 创建工作簿, wb:工作薄, data:数据, "Sheet1":这个是一般Excel表左下叫的导航栏名
      xlsx.utils.book_append_sheet(wb, data, "Sheet1");
      // 生成文件并下载,wb:工作薄, "测试表.xlsx":这里可以自定义表格的名称,可根据需要改成动态的形式
      xlsx.writeFile(wb, "测试表.xlsx");
    },
  },
};
</script>

展示二:(这里展示的是测试数据的导出,未模拟后台返回数据,所以不需要将表头进行转换)

data() {
      return {
        items: [
          { '姓名': '谢国庆', '年龄': 29, '电话': '13697653219' },
          { '姓名': '吕小果', '年龄': 25, '电话': '13235789213' },
          { '姓名': '宋阿美', '年龄': 27, '电话': '13756776977' },
          { '姓名': '蒋铁柱', '年龄': 33, '电话': '15003373377' }
        ]
      }
    },
    methods: {
      download : function() {
          // 创建工作表
        const data = XLSX.utils.json_to_sheet(this.items)
        // 创建工作簿
        const wb = XLSX.utils.book_new()
        // 创建工作簿
        XLSX.utils.book_append_sheet(wb, data, 'kalacloud-data')
         // 生成文件并下载
        XLSX.writeFile(wb,'kalacloudExportExcel.xlsx')
      }
    }
]

完整代码展示:(展示的是模拟后台返回数据的导出)

<template>
  <!-- 导出excel -->
  <el-button
    type="warning"
    @click="outExcle"
  >导出Excel</el-button>
</template>

<script>
//这里使用的是按需引入
import * as xlsx from "xlsx";
export default {
  data() {
    return {
      // 测试数据,模拟的是后台返回的数据
      items: [
        { name: "谢国庆", age: 29, phone: "13697653219" },
        { name: "吕小果", age: 25, phone: "13235789213" },
        { name: "宋阿美", age: 27, phone: "13756776977" },
        { name: "蒋铁柱", age: 33, phone: "15003373377" },
      ],
    };
  },
  methods: {
    outExcle() {
      //表头数据切换
      const changeTableHead = (
        tableData = [],
        // 表头数据转换,可根据需要更改
        fieldName = {
          name: "姓名",
          age: "年龄",
          phone: "电话号码",
        }
      ) => {
        const list = tableData.map((item) => {
          const obj = {};
          for (const k in item) {
            if (fieldName[k]) {
              obj[fieldName[k]] = item[k];
            }
          }
          return obj;
        });
        return list;
      };

      //表头数据切换,即把英文名字改为中文名字
      const list = changeTableHead(this.items);
      // 创建工作表
      const data = xlsx.utils.json_to_sheet(list);
      // 创建工作簿
      const wb = xlsx.utils.book_new();
      // 创建工作簿, wb:工作薄, data:数据, "Sheet1":这个是一般Excel表左下叫的导航栏名
      xlsx.utils.book_append_sheet(wb, data, "Sheet1");
      // 生成文件并下载,wb:工作薄, "测试表.xlsx":这里可以自定义表格的名称,可根据需要改成动态的形式
      xlsx.writeFile(wb, "测试表.xlsx");
    },
  },
};
</script>

<style>
</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在前端实现导出数据Excel表格,你可以使用以下方法之一: 1. 使用现有的库或插件:许多JavaScript库和插件可以帮助你在前端导出数据Excel表格,如 `xlsx`、`exceljs`、`FileSaver.js` 等。这些库提供了方便的方法和功能来处理Excel文件的创建和导出。 2. 手动构建Excel文件:你可以使用JavaScript生成Excel文件的格式(如CSV、XML或XLSX)并将其下载到用户的设备上。这需要一些编码工作,但是可以根据你的需求来实现自定义功能。 以下是两种方法的示例: 使用 `xlsx` 库: ```javascript import XLSX from 'xlsx'; function exportToExcel(data, filename) { const workbook = XLSX.utils.book_new(); const worksheet = XLSX.utils.aoa_to_sheet(data); XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); XLSX.writeFile(workbook, filename); } ``` 使用纯JavaScript手动构建Excel文件(CSV格式): ```javascript function exportToExcel(data, filename) { let csv = 'data:text/csv;charset=utf-8,'; data.forEach(row => { csv += row.join(',') + '\n'; }); const encodedUri = encodeURI(csv); const link = document.createElement('a'); link.setAttribute('href', encodedUri); link.setAttribute('download', filename); document.body.appendChild(link); link.click(); document.body.removeChild(link); } ``` 在上述示例中,你需要提供一个二维数组 `data`,其中每个子数组表示一行数据,然后将其传递给 `exportToExcel` 函数以导出Excel表格。 `filename` 参数是要保存的文件名。 请确保在使用这些代码之前,你已经引入了相关的库或插件,或者在手动构建Excel文件时做了必要的修改和调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值