首页 > 其他分享 >vue2把后端响应数据保存ex表格

vue2把后端响应数据保存ex表格

时间:2025-01-05 14:22:32浏览次数:1  
标签:XLSX axios const 表格 xlsx 数据 ex vue2 data

在 Vue 中实现点击按钮将后端响应的数据导出为 .xlsx 文件,可以使用 axios 进行数据请求,并结合 xlsxfile-saver 库完成文件的生成和下载。

以下是完整实现步骤:


1. 安装依赖库

运行以下命令安装所需的库:

npm install xlsx file-saver axios

2. 创建导出功能

组件代码示例

<template>
  <div>
    <button @click="exportExcel">导出数据为 Excel 文件</button>
  </div>
</template>

<script>
import axios from "axios";
import * as XLSX from "xlsx";
import { saveAs } from "file-saver";

export default {
  name: "ExportExcel",
  methods: {
    async exportExcel() {
      try {
        // 发送请求获取后端数据
        const response = await axios.get("/api/v1/data-to-export", {
          responseType: "json", // 确保返回的数据是 JSON 格式
        });

        // 假设后端返回的数据结构如下:
        // response.data = [
        //   { name: "张三", age: 25, city: "杭州" },
        //   { name: "李四", age: 30, city: "上海" }
        // ]

        const data = response.data;

        // 将数据转换为工作表格式
        const worksheet = XLSX.utils.json_to_sheet(data);

        // 创建工作簿并添加工作表
        const workbook = XLSX.utils.book_new();
        XLSX.utils.book_append_sheet(workbook, worksheet, "活跃数据");

        // 将工作簿转换为 Blob 对象
        const excelBuffer = XLSX.write(workbook, {
          bookType: "xlsx",
          type: "array",
        });

        // 使用 file-saver 保存文件
        const blob = new Blob([excelBuffer], {
          type: "application/octet-stream",
        });
        saveAs(blob, "活跃数据.xlsx");
      } catch (error) {
        console.error("导出失败:", error);
      }
    },
  },
};
</script>

<style scoped>
button {
  padding: 10px 20px;
  background-color: #007bff;
  color: white;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}
button:hover {
  background-color: #0056b3;
}
</style>

3. 后端响应接口

确保后端接口返回 JSON 格式的数据。例如:

Node.js 示例

app.get("/api/v1/data-to-export", (req, res) => {
  const data = [
    { name: "张三", age: 25, city: "杭州" },
    { name: "李四", age: 30, city: "上海" },
  ];
  res.json(data);
});

4. 功能解析

  • axios.get(): 从后端获取数据。
  • XLSX.utils.json_to_sheet(): 将 JSON 数据转换为工作表。
  • XLSX.utils.book_new()XLSX.utils.book_append_sheet(): 创建工作簿并附加工作表。
  • XLSX.write(): 将工作簿转换为二进制数据。
  • file-saversaveAs(): 将 Blob 对象保存为文件并触发下载。

5. 效果

点击按钮时,将触发请求,获取后端数据,并生成并下载 .xlsx 文件。下载文件名为 活跃数据.xlsx

如果有更多需求(如文件格式或数据处理),可以在转换前对数据进行处理或增加其他逻辑。

标签:XLSX,axios,const,表格,xlsx,数据,ex,vue2,data
From: https://www.cnblogs.com/freps/p/18653325

相关文章

  • CanvasContext.drawImage
    CanvasContext.drawImage(stringimageResource,numbersx,numbersy,numbersWidth,numbersHeight,numberdx,numberdy,numberdWidth,numberdHeight)CanvasContext是旧版的接口,新版Canvas2D接口与Web一致从基础库2.9.0开始,本接口停止维护,请使用RenderingC......
  • CanvasContext.draw
    CanvasContext.draw(booleanreserve,functioncallback)CanvasContext是旧版的接口,新版Canvas2D接口与Web一致从基础库2.9.0开始,本接口停止维护,请使用RenderingContext代替小程序插件:支持相关文档:旧版画布迁移指南、canvas组件介绍功能描述将之前在绘图......
  • CanvasContext.createPattern
    CanvasContext.createPattern(stringimage,stringrepetition)CanvasContext是旧版的接口,新版Canvas2D接口与Web一致从基础库2.9.0开始,本接口停止维护,请使用RenderingContext代替基础库1.9.90开始支持,低版本需做兼容处理。小程序插件:支持相关文档:旧版画......
  • CanvasContext.createLinearGradient
    CanvasGradientCanvasContext.createLinearGradient(numberx0,numbery0,numberx1,numbery1)CanvasContext是旧版的接口,新版Canvas2D接口与Web一致从基础库2.9.0开始,本接口停止维护,请使用RenderingContext代替小程序插件:支持相关文档:旧版画布迁移指南、......
  • CanvasContext.createCircularGradient
    CanvasGradientCanvasContext.createCircularGradient(numberx,numbery,numberr)CanvasContext是旧版的接口,新版Canvas2D接口与Web一致从基础库2.9.0开始,本接口停止维护,请使用RenderingContext代替小程序插件:支持相关文档:旧版画布迁移指南、canvas组件......
  • CanvasContext.closePath
    CanvasContext.closePath()CanvasContext是旧版的接口,新版Canvas2D接口与Web一致从基础库2.9.0开始,本接口停止维护,请使用RenderingContext代替小程序插件:支持相关文档:旧版画布迁移指南、canvas组件介绍功能描述关闭一个路径。会连接起点和终点。如果关闭路......
  • CanvasContext.clip
    CanvasContext.clip()CanvasContext是旧版的接口,新版Canvas2D接口与Web一致从基础库2.9.0开始,本接口停止维护,请使用RenderingContext代替基础库1.6.0开始支持,低版本需做兼容处理。小程序插件:支持相关文档:旧版画布迁移指南、canvas组件介绍功能描述从......
  • CanvasContext.clearRect
    CanvasContext.clearRect(numberx,numbery,numberwidth,numberheight)CanvasContext是旧版的接口,新版Canvas2D接口与Web一致从基础库2.9.0开始,本接口停止维护,请使用RenderingContext代替小程序插件:支持相关文档:旧版画布迁移指南、canvas组件介绍功能......
  • CanvasContext.bezierCurveTo
    CanvasContext.bezierCurveTo(numbercp1x,numbercp1y,numbercp2x,numbercp2y,numberx,numbery)CanvasContext是旧版的接口,新版Canvas2D接口与Web一致从基础库2.9.0开始,本接口停止维护,请使用RenderingContext代替小程序插件:支持相关文档:旧版画布迁移......
  • CanvasContext.beginPath
    CanvasContext.beginPath()CanvasContext是旧版的接口,新版Canvas2D接口与Web一致从基础库2.9.0开始,本接口停止维护,请使用RenderingContext代替小程序插件:支持相关文档:旧版画布迁移指南、canvas组件介绍功能描述开始创建一个路径。需要调用fill或者strok......