vue3导出excel表格方式之一——xlsx文件

这篇博客展示了如何在Vue应用中结合'xlsx'和'file-saver'库来实现表格数据的导出为Excel文件。通过点击按钮,用户可以将包含日期、姓名和地址的数据导出为.xlsx格式,文件名为当前日期。示例代码详细解释了整个过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载插件

"element-plus": "^2.2.1",
"file-saver": "^2.0.5",
"xlsx": "^0.17.4"
<script setup>
import { reactive, ref } from "vue";
import XLXS from "xlsx";
import FileSaver from "file-saver";
defineProps({
  msg: String,
});
const count = ref(0);
const state = reactive({
  excelTitle: "表格标题1",
});
const tableData = reactive([
  {
    date: "2016-05-02",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1518 弄",
  },
  {
    date: "2016-05-04",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1517 弄",
  },
  {
    date: "2016-05-01",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1519 弄",
  },
  {
    date: "2016-05-03",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1516 弄",
  },
]);
const exportClick = () => {
  // 设置当前日期
  let time = new Date();
  let year = time.getFullYear();
  let month = time.getMonth() + 1;
  let day = time.getDate();
  let name = year + "" + month + "" + day;
  // 导出文件名
  const filename = state.excelTitle;
  // 通过id,获取导出的表格数据
  const wb = XLXS.utils.table_to_book(document.getElementById("table"), {
    raw: true,
  });
  const wbout = XLXS.write(wb, {
    bookType: "xlsx",
    bookSST: true,
    type: "array",
  });
  try {
    FileSaver.saveAs(
      new Blob([wbout], {
        type: "application/octet-stream",
      }),
      name + ".xlsx"
    );
  } catch (e) {
    console.log(e);
  }
  return wbout;
};
</script>

<template>
  <div class="home">
    <button type="button" @click="exportClick()">导出pdf</button>
    <div id="table">
      <el-table :data="tableData" style="width: 100%">
        <el-table-column prop="date" label="日期" width="180">
        </el-table-column>
        <el-table-column prop="name" label="姓名" width="180">
        </el-table-column>
        <el-table-column prop="address" label="地址"> </el-table-column>
      </el-table>
    </div>
  </div>
</template>

<style scoped>
#pdfDom {
  color: #42b983;
}
</style>

大部分参照了其他博主的内容

### Vue 实现导出多级 Excel 表格 为了实现在Vue项目中导出带有多个级别的表头的Excel表格,可以采用特定库和技术来简化这一过程。通过引入`file-saver`和`xlsx`这两个依赖包,能够有效地支持文件保存以及Excel文档的操作功能[^3]。 #### 安装必要的依赖项 在命令行工具中执行如下指令以安装所需的npm包: ```bash npm install -D script-loader ``` #### 创建辅助JavaScript 文件 需创建一个新的名为 `excel` 的文件夹于项目的 `src` 目录之下,在此文件夹内放置三个重要的 JavaScript 文件:`Blob.js`, `export2Excel.js` 和 `export2Excel2.js`. 特别注意的是,后者用于处理具有复杂结构即多层表头的情况下的数据导出操作. #### 编写导出逻辑代码 下面展示了一段基于上述准备工作的实际应用案例——当用户触发某个按钮事件时,会调用该函数从而启动Excel文件的生成流程并提供给客户端下载[^2]: ```javascript // 假设这是在一个Vue组件中的methods部分定义的方法 handleDownload() { import("@/utils/excel/export2Excel2").then(excel => { // 动态加载模块 const tHeader = [&#39;姓名&#39;, &#39;年龄&#39;, &#39;城市&#39;]; // 这里应替换为真实的列名数组 const filterVal = [&#39;name&#39;, &#39;age&#39;, &#39;city&#39;]; // 对应tHeader的实际字段名称 // 构建多级表头配置对象 let multiHeader = [ [{ s: 1, e: 3 }, "个人信息"], ["名字", "", ""], ["年龄", "", ""], ["所在地区", "", ""] ]; // 获取待导出的数据列表 const list = this.list; const data = formatJson(filterVal, list); // 调用第三方库提供的API完成最终的Excel文件构建与下载动作 excel.export_json_to_excel({ header: tHeader, data, filename: &#39;the-file-name&#39;, autoWidth: true, bookType: &#39;xlsx&#39;, multiHeader }); }) } function formatJson(filterVal, jsonData) { return jsonData.map(v => filterVal.map(j => v[j])) } ``` 这段代码片段展示了如何利用动态导入的方式按需加载外部资源,并且构造了一个简单的例子说明怎样设置多级表头参数(`multiHeader`)及其对应的值映射关系(`filterVal`). 同时也包含了将原始JSON格式转换成适合写入Excel单元格的内容形式的过程.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值