当前位置: 首页 > news >正文

前端实现数据导出成excel

前端(react/vue)实现数据导出成excel

1. 下载依赖

npm install js-export-excel -D

2. 新建exportExcel.js

import ExportJsonExcel from 'js-export-excel';
​
/*** @Event: 获取导出数据* @description:* @param config.tableParams<Object>: 表格接口请求参数* @param config.listKey<String>: 表格数据key,默认为 'list'* @param config.reqUrl<String>: 表格接口请求地址* @param config.fetchInit<Object>: 表格接口请求配置,默认为 {method: 'GET', headers: {'content-type': 'application/json'}}* @author: mhf* @time: 2025-04-21 10:47:20**/
export const fetchData = async (config) => {const {tableParams,listKey = 'list',reqUrl,fetchInit = {method: 'GET',headers: {'content-type': 'application/json',Authorization: localStorage.getItem('token'),},}} = config;
​try {const queryParams = new URLSearchParams(tableParams).toString();const response = await fetch(`${reqUrl}?${queryParams}`, fetchInit);if (!response.ok) {throw new Error(`HTTP error! status: ${response.status}`);}const tableRes = await response.json();return tableRes[listKey] || [];} catch (error) {console.error('Fetch data failed:', error);return [];}
};
​
/*** @Event: 前端文件导出* @description:* @param reqConfig<Object>: 请求配置对象* @param reqConfig.tableParams<Object>: 表格接口请求参数* @param reqConfig.listKey<String>: 表格数据key,默认为 'list'* @param reqConfig.reqUrl<String>: 表格接口请求地址* @param config<Object>: 导出配置对象* @param config.fileName<String>: 文件名* @param config.sheetFilter<Array>: 表头标题对应的key* @param config.sheetHeader<Array>: 表头名称* @author: mhf* @time: 2025-04-18 18:03:05**/
export const exportExcel = async (reqConfig, config) => {const {fileName,sheetFilter = [],sheetHeader = [],fn = arr => arr} = config;
​const tableData = await fetchData(reqConfig);
​if (tableData && tableData.length > 0) {const processedData = fn(tableData);
​const option = {fileName,datas: [{sheetData: JSON.parse(JSON.stringify(processedData)),sheetName: fileName,sheetFilter,sheetHeader,columnWidth: new Array(sheetHeader.length).fill(20),}]};const toExcel = new ExportJsonExcel(option);toExcel.saveExcel();
​return processedData;  // 返回处理后的数据} else {console.warn('No data to export');return [];}
};

3. 使用

import { exportExcel } from '/src/utils/exportExcel';
​const reqConfig = {tableParams: {number4page: 99999,page: 0},reqUrl: '/apis/elevator/page',}
​const config = {fileName: '电梯监测表',sheetFilter: ['elevatorname', 'modeType', 'runningStateType', 'alarmtypelabel', 'workTime', 'aaa'],sheetHeader: ['编号', '运行模式', '运行状态', '报警状态', '运行时长', 'aaa'],fn: (data) => {return data.map((item) => {return {...item,runningStateType: item.runningstatetype == 1 ? '运行中' : '停止',modeType: item.modetype === 1 ? '自动' : '手动',aaa: item.elevatorname + item.elevatorcode,}})}}<div onClick={() => exportExcel(reqConfig, config)}>导出</div>

相关文章:

  • RIP动态路由(三层交换机+单臂路由)
  • 【Markdown】【HTML】在Markdown中实现康奈尔笔记模式(右侧留白)
  • 百度暑期实习岗位超3000个,AI相关岗位占比87%,近屿智能携AIGC课程加速人才输出
  • ASP.NET Core 分层项目中EFCore的使用
  • 完美解决Microsoft Edge浏览器无法同步/一直在同步中/更新失败等问题
  • 神经网络直接逆控制:神经网络与控制的结合入门级结合
  • 【C#】.net core 6.0调用MVC API接口时,提示Unsupported Media Type,状态码415
  • 穿透数据迷雾:PR 曲线与 ROC 曲线的深度剖析+面试常见问题及解析
  • spring security +kotlin 实现oauth2.0 认证
  • 加油站小程序实战教程12显示会员信息
  • 【Django】设置让局域网内的人访问
  • 忽略 CS8616 警告在 Visual Studio 2022 中【C# 8.0 】
  • Halcon应用:相机标定之应用
  • AI助理iOS开发:Copilot for Xcode 下载与安装全指南
  • Spark-SQL与Hive集成及数据分析实践
  • Android15沉浸式界面顶部有问题
  • jinjia2将后端传至前端的字典变量转换为JS变量
  • TM1640学习手册及示例代码
  • 傲来云分享,负载均衡:提升网站性能与稳定性
  • 13.QT-DateTime Edit|Dial|Slider|日期计算器|调整窗口透明度|调整窗口大小|自定义快捷键(C++)
  • 教育部召开全国中小学幼儿园安全工作视频会议:加强校园安防建设
  • 石中英已任新成立的清华大学教育学院院长
  • 协信远创620亿元债务重整计划获法院批准:冯仑入局,部分核心资产已提前转让
  • 上海又现昆虫新物种:体长仅1.5毫米,却是凶猛的捕食者
  • 中汽协发布规范驾驶辅助宣传与应用倡议书
  • 中宣部等十部门联合印发《新时代职业道德建设实施纲要》