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

相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄4 天前
JavaScript 隐式全局变量解析
javascript
汉堡大王95274 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大4 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师4 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端