前端JS实现导出xlsx文件

需求背景: 需要导出表格的数据,由于后端不提供导出接口,所以由前端通过JSON数据导出实现。
使用的插件:js-export-excel

安装: npm install js-export-excel

javascript 复制代码
// 导入依赖
const ExportJsonExcel = require('js-export-excel');
/** 
 * JSON数据-文件导出
 *@param data [ 要导出的 object 数据] 
 **/
const exportFile = (data: any, fileName?: string) => {
  let sheetData = [];
  // 处理数据
  data.forEach((item) => {
    /** 表头为参考示例,请根据实际情况自定义
    * sheetHeader: [ '姓名', '年龄', '性别', '职业', '爱好'],
    * sheetData: [['name', 'age', 'gender', 'career', 'hobby']],
    **/
    sheetData.push([
      item.name,
      item.age,
      item.gender,
      item.career,
      item.hobby
    ]);
  });
  
  // 导出文件配置
  const option: {
    fileName?: string;
    datas?: any;
  } = {};

  option.fileName = fileName || '文件名称'; // 自定义文件名

  option.datas = [
    {
      // 工作表名称
      sheetName: 'sheet',
      // 表头
      sheetHeader: [ '姓名', '年龄', '性别', '职业', '爱好'], 
      // 自定义列宽
      columnWidths: [10, 5, 5, 5, 10],
      sheetData: sheetData,
    },
  ];

  const toExcel = new ExportJsonExcel(option);
  //保存
  toExcel.saveExcel();
};

使用:

js 复制代码
// 自己的table 数据
exportFile (tableData, 'test');

亲测有用,只要前端能拿到的是表格全量数据,就能直接导出表格所有数据。但如果是后端分页查询的表格,前端每次只能查10条或20条的话,那当前每次也只能导出10条20条。不然的话需要前端存一下所有的数据才能一次导出所有,或者后端配合提供接口返回所有数据。

相关推荐
IT_陈寒2 小时前
Vite的热更新突然不香了,排查三小时差点砸键盘
前端·人工智能·后端
子兮曰2 小时前
Agency-Agents 深度解析:400+ AI 专家的"梦之队"如何重塑开发工作流
前端·后端·vibecoding
山河木马2 小时前
渲染管线-计算得到gl_Position(顶点着色器)之后续GPU流程
javascript·webgl·图形学
竹林8183 小时前
用 The Graph 查询链上数据实战:从手搓 RPC 到 Subgraph,我的 NFT 项目数据加载快了 10 倍
前端·javascript
妙码生花3 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十九):点选验证码代码逐行目检
前端·后端·go
Awu12274 小时前
⚡从零开发 Agent CLI(五)实现一个可治理、可扩展的工具系统
前端·人工智能·claude
咪库咪库咪4 小时前
Vue3-生命周期
前端
莪_幻尘5 小时前
你的 AI Skill 越多越蠢?Token 上下文爆炸的求生指南
前端·ai编程
lichenyang4535 小时前
从 has.echo 到异步 API 注册表:一次 ASCF API 回调不触发的排查复盘
前端
林瞅瞅5 小时前
Nuxt3 项目部署 Nginx 防盗链后特定 JS 文件 403 问题修复方案
前端