前端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条。不然的话需要前端存一下所有的数据才能一次导出所有,或者后端配合提供接口返回所有数据。

相关推荐
zwjapple3 小时前
docker-compose一键部署全栈项目。springboot后端,react前端
前端·spring boot·docker
像风一样自由20206 小时前
HTML与JavaScript:构建动态交互式Web页面的基石
前端·javascript·html
aiprtem6 小时前
基于Flutter的web登录设计
前端·flutter
浪裡遊6 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
why技术6 小时前
Stack Overflow,轰然倒下!
前端·人工智能·后端
GISer_Jing7 小时前
0704-0706上海,又聚上了
前端·新浪微博
止观止7 小时前
深入探索 pnpm:高效磁盘利用与灵活的包管理解决方案
前端·pnpm·前端工程化·包管理器
whale fall7 小时前
npm install安装的node_modules是什么
前端·npm·node.js
烛阴7 小时前
简单入门Python装饰器
前端·python
袁煦丞8 小时前
数据库设计神器DrawDB:cpolar内网穿透实验室第595个成功挑战
前端·程序员·远程工作