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

前端实现数据导出成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>

http://www.xdnf.cn/news/987.html

相关文章:

  • 【eNSP实验】带环回接口的多区域OSPF
  • 黑马安装docker网络问题linux
  • OpenCV day7
  • 制作一款打飞机游戏16:空间优化
  • 生产环境问题排查:日志分析与性能瓶颈定位(一)
  • [wifiI]CCA
  • 关于QTableWidget控件中不显示Item的问题解决方法
  • 速通FlinkCDC3.0
  • 【数字图像处理】图像纹理分析
  • 使用 Vue Router 和 Vite 构建的自动路由生成系统
  • 基于unsloth微调一个越狱大模型
  • 经典文献阅读之--Kinematic-ICP(动态优化激光雷达与轮式里程计融合)
  • Spark,配置hadoop集群2
  • set、multiset、map、multimap在OJ的使用
  • 深度学习预训练和微调
  • 在Ubuntu上查看PCL(Point Cloud Library)的版本
  • MSSQL-数据库还原报错-‘32(另一个程序正在使用此文件,进程无法访问。)‘
  • Cursor可视化大屏搭建__0420
  • java及mysql日期问题
  • RPA系统应用通用文字识别技术,推动 RPA 在各个领域的广泛应用和发展
  • 公有云攻防5(云函数)
  • Java学习手册:Cookie 与 Session 管理
  • 用全新发布的ChatGPT-o3搜文献写综述、专业审稿、降重润色,四个步骤轻松搞定全部论文难题!
  • 电子电器架构 ---软件定义汽车的电子/电气(E/E)架构
  • RolmOCR重磅开源:基于Qwen2.5-VL,速度提升40%,手写/倾斜文档识别准确率超92%
  • 基于定时器查询模式的LED闪烁(STC89C52单片机)
  • MCP:AI时代的“万能插座”,开启大模型无限可能
  • 策略模式:优雅应对多变的业务需求
  • 【论文阅读23】-地下水预测-TCN-LSTM-Attention(2024-11)
  • ZYNQ异构架构精髓:AXI_BRAM赋能PS-PL协同计算的终极指南