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

相关推荐
用户62960593247053 小时前
从“浏览器根本区分不了”到真正实现:刷新不退出,关闭标签页自动退出,前端判断浏览器关闭和刷新
前端
qetfw3 小时前
MWU:Vue 3 + FastAPI 的 MaaFramework 跨平台 WebUI 源码
前端·vue.js·python·fastapi·开源项目·效率工具
mfxcyh3 小时前
Vue3+Ant Design Vue 实现手动异步文件上传(含大小校验、弹窗上传)
前端·javascript·vue.js
wordbaby3 小时前
Web端热敏标签打印完整解决方案(QZ Tray + 译维A42)
前端
swipe3 小时前
03|Axios 请求进了后端之后:Controller、Request、Response 是怎么接住它的?
前端·后端·全栈
meilindehuzi_a3 小时前
Vue3进阶基础:指令修饰符、v-model表单绑定、动态样式、计算属性与侦听器实战
前端·javascript·vue.js
csdn2015_3 小时前
vue 前端运行命令
前端·javascript·vue.js
swipe3 小时前
02|从 `pnpm dev` 到 Spring Boot 启动:后端服务到底怎么跑起来?
前端·后端·全栈
swipe3 小时前
01|前端人第一次打开 Spring Boot 项目,应该先看哪里?
前端·后端·全栈
Cobyte3 小时前
根据浏览器解析 HTML 的规范实现 HTML 解析器
前端·javascript·vue.js