【源码】JeecgBoot导出Excel模板
【源码】JeecgBoot导出Excel模板一、前言1、Excel模板原型二、实现代码1、导入模板2、yml文件配置3、接口方法4、前端调取方法三、说明版权声明文为博主原创文章未经博主允许不得转载。原创不易希望大家尊重原创Copyright © 2026 DarLing丶张皇 保留所有权利一、前言JeecgBoot中Autopoi是其自带的实现导入导出功能的poi可以方便我们更简单的实现Excel模板导出Excel导入Word模板导出。使用前准备在Maven中引入Autopoi依赖dependencygroupIdorg.jeecgframework/groupIdartifactIdautopoi-web/artifactIdversion1.3.6/version/dependency所有表达式表达式描述/示例三目运算{{test ? obj:obj2}}test如果某一个字段则该字段一定是布尔类型,如果一个表达式如arg 1则一定要带有空格n:这个cell是数值类型 {{n:}}le:代表长度{{le:()}} 在if/else 运用{{le:() 8 ? obj1 : obj2}}fd:格式化时间 {{fd:(obj;yyyy-MM-dd)}}fn:格式化数字 {{fn:(obj;###.00)}}fe:遍历数据,创建row!fe遍历数据不创建row$fe:下移插入,把当前行,下面的行全部下移.size()行,然后插入#fe:横向遍历v_fe:横向遍历值!if:删除当前列 {{!if:(test)}}单引号表示常量值 ‘’ 比如’1’ 那么输出的就是 1NULL空格]]换行符 多行遍历导出1、Excel模板原型上图中t.name等为模板占位符预先设置导出模板通过表达式取值二、实现代码1、导入模板先将模板Word导入到jeecg-boot-module-systemsrcmainresourcestemplates下2、yml文件配置统一在.yml文件中配置文档模板目录方便维护。2.1、开发环境下在application-dev.yml中配置path :template-attendance-record-file: jeecg-boot-module-system/src/main/resources/templates/attendance_record.xlsx2.2、生产环境下在application-prod.yml中配置path :template-attendance-record-file: jeecg-boot-module-system/src/main/resources/templates/attendance_record.xlsx3、接口方法Controller// 引入模板文件存放地址Value(value${jeecg.path.template-attendance-record-file})privateStringtemplateAttendanceRecordFile;/** * 导出考勤记录表Excel(模板) * templateAttendanceRecordFile为模板存放路径请在yml文件中配置 * param startTime * param endTime */GetMapping(value/export-excel-file)publicResponseEntityResourceexportExcel(RequestParam(namestartTime,requiredtrue)StringstartTime,RequestParam(nameendTime,requiredtrue)StringendTime){Resourceresourcenull;FiletempFilenull;try{// step.1 获取数据并写入Excel调用Service层导出方法org.apache.poi.ss.usermodel.WorkbookworkbooktbClockRecordService.exportExcel(startTime,entTime,templateAttendanceRecordFile);// step.2 创建临时文件保存导出结果tempFileFile.createTempFile(exported_survey_report_sample_test_file,.xlsx);FileOutputStreamfosnewFileOutputStream(tempFile);workbook.write(fos);fos.close();workbook.close();// step.3 创建FileSystemResource对象resourcenewFileSystemResource(tempFile);// step.4 返回ResponseEntity包含文件的响应returnResponseEntity.ok().header(Content-Disposition,attachment; filenameattendance_record.xlsx).body(resource);}catch(Exceptione){e.printStackTrace();log.error(考勤信息导出失败e.getMessage());thrownewValidationException(考勤信息失败e.getMessage());}finally{// 清理临时文件可选取决于是否需要保留文件if(tempFile!nulltempFile.exists()){tempFile.deleteOnExit();}}}Service/** * 导出考勤信息Excel模板 * param startTime 开始时间 * param endTime 结束时间 * param templatePath 模板地址路径 * return */WorkbookexportExcel(StringstartTime,StringendTime,StringtemplatePath);5、ServiceImpl/** * 导出考勤记录Excel模板 * param startTime 开始时间 * param entTime 结束时间 * param templatePath 模板地址路径 * return */OverridepublicWorkbookexportExcel(StringstartTime,StringentTime,StringtemplatePath){Workbookworkbooknull;try{// Step.1、判断模板文件是否存在FiletemplateFilenewFile(templatePath);if(!templateFile.exists()){thrownewIOException(模板文件不存在:templatePath);}// Step.2、数据查询(仅为示例)ListTbClockRecordtbClockRecordListtbClockRecordService.selectList(newLambdaQueryWrapperAreaFarm().eq(TbClockRecord::getCreateTime,startTime).eq(TbClockRecord::getCreateTime,entTime));if(ObjectUtil.isNull(tbLeave)){thrownewJeecgBootException(未找到数据);}// Step.3、封装模板数据(以下仅为示例具体数据请根据自身业务赋值)ListMapString,ObjecttotalMapListnewArrayList();ListMapString,ObjectlistMapnewArrayList();// 序号从1自增intseqNum1;for(TbClockRecordtbClockRecord:tbClockRecordList){MapString,ObjectmapnewHashMapString,Object();// 序号map.put(xh,seqNum);// 姓名map.put(name,tbClockRecord.getName());// 部门map.put(dept,tbClockRecord.getDept());// 上班打卡map.put(clockin,tbClockRecord.getClockin());// 下班打卡map.put(clockout,tbClockRecord.getClockout());// 打卡说明map.put(detail,tbClockRecord.getDetail());// 备注map.put(remark,tbClockRecord.getRemark());seqNum;listMap.add(map);}totalMapList.put(maplist,listMap)// Step.4、使用Jeecg-Boot模板导出ExcelTemplateExportParamsparamsnewTemplateExportParams(templatePath);workbookExcelExportUtil.exportExcel(params,totalMapList);}catch(Exceptione){e.printStackTrace();}returnworkbook;}4、前端调取方法4.1、统一的API请求管理/** * 下载文件 用于导出 * param url 请求地址 * param parameter 请求参数 * returns {*} */exportfunctiondownFile(url,parameter){returnaxios({url:url,params:parameter,method:get,responseType:blob})}//get请求、post请求等此处省略4.2、请求// 引入API请求import{downFile}from/api;/** * 下载文件 用于Excel导出 * param record 导出数据的行信息 * returns {*} */handleExportWord(record){const{id,name}record;letparams{id};downFile(/export-excel-file,params).then((data){if(!data||data.size0){this.$message.warning(考勤记录表下载失败);return;}if(typeofwindow.navigator.msSaveBlob!undefined){// IE/Edge 浏览器window.navigator.msSaveBlob(newBlob([data],{type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet}),fileName.xlsx);}else{// 现代浏览器leturlwindow.URL.createObjectURL(newBlob([data],{type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet}));letlinkdocument.createElement(a);link.style.displaynone;link.hrefurl;link.setAttribute(download,fileName-考勤记录表.xlsx);// 统一使用 fileNamedocument.body.appendChild(link);link.click();document.body.removeChild(link);window.URL.revokeObjectURL(url);}}).finally((){this.confirmLoadingfalse;})})}三、说明预先设置导出模板通过表达式取值实现一些特殊样式/风格的导出避免编写大量复杂的代码降低开发难度提高维护效率word模板和Excel模板用法基本一致支持的标签也是一致的若需要Word模版导出请移步前往【源码】JeecgBoot导出Word模板学习。Excel模板导出前往JeecgBoot文档中心参考。原创不易喝水莫忘挖井人谢谢

相关新闻

坐地铁、排队的间隙,用这款书籍浓缩听读软件把时间变成知识

坐地铁、排队的间隙,用这款书籍浓缩听读软件把时间变成知识

通勤地铁、排队等候、午休间隙,这些碎片时间构成了当代人难以利用的时间黑洞。行业调研显示,职场人日均碎片化时间约2.4小时,但传统阅读需要在固定时段专注投入,两者形成了难以调和的矛盾。有声书软件推荐开始成为破解这一困局的关…

2026/7/29 18:33:55 阅读更多 →
Cindy高级应用:多Agent协作完成复杂任务的创新方法

Cindy高级应用:多Agent协作完成复杂任务的创新方法

Cindy高级应用:多Agent协作完成复杂任务的创新方法 【免费下载链接】cindy Consider it done. The open-source AI agent that works out of the box 想到,就能做到。开源、开箱即用的 AI Agent。 项目地址: https://gitcode.com/gh_mirrors/cind/cin…

2026/7/29 18:32:54 阅读更多 →
AG Kit内存管理技巧:持久化上下文与高效数据存储最佳实践

AG Kit内存管理技巧:持久化上下文与高效数据存储最佳实践

AG Kit内存管理技巧:持久化上下文与高效数据存储最佳实践 【免费下载链接】ag-kit 项目地址: https://gitcode.com/GitHub_Trending/an/ag-kit AG Kit是一款模块化AI代理工具包(Modular AI Agent Toolkit),专为Google Ant…

2026/7/29 18:32:54 阅读更多 →

最新新闻

实时动态安全库存计算公式首次公开(含TensorFlow+SQL双实现),仅限本周下载

实时动态安全库存计算公式首次公开(含TensorFlow+SQL双实现),仅限本周下载

更多请点击: https://codechina.net 第一章:实时动态安全库存计算公式首次公开(含TensorFlowSQL双实现),仅限本周下载 安全库存并非静态阈值,而是随需求波动率、补货周期不确定性、服务水平目标及供应链时…

2026/7/29 18:46:59 阅读更多 →
情感AI中闭源vs开源模型的场景化选择深度分析

情感AI中闭源vs开源模型的场景化选择深度分析

情感AI中闭源vs开源模型的场景化选择深度分析 一、情感场景对模型的特殊要求:安全性与一致性优先于能力广度 情感AI产品对模型的选择优先级与通用AI应用截然不同。通用应用追求"回答准确率""推理深度"和"知识广度"。情感场景的核心排…

2026/7/29 18:46:59 阅读更多 →
VMware 15安装Windows 10虚拟机:从零配置到性能优化全指南

VMware 15安装Windows 10虚拟机:从零配置到性能优化全指南

1. 为什么选择VMware 15来安装Windows 10?如果你正在寻找一个稳定、功能全面且对老硬件兼容性极佳的虚拟机环境来运行Windows 10,那么VMware Workstation 15 Pro绝对是一个绕不开的经典选择。尽管VMware已经更新到了17甚至更新的版本,但15版在…

2026/7/29 18:46:59 阅读更多 →
远程开发者协作工具选型:Notion/Linear/Figma的AI集成能力对比

远程开发者协作工具选型:Notion/Linear/Figma的AI集成能力对比

远程开发者协作工具选型:Notion/Linear/Figma的AI集成能力对比 一、三工具AI能力的差异定位:文档、任务、设计的不同AI化路径 远程协作工具的AI集成在2026年已经不再是"有和无"的竞争,而是"深和浅"的区别。 Notion AI&am…

2026/7/29 18:46:59 阅读更多 →
眼镜架选购全攻略:从材质、尺寸到脸型适配的底层逻辑

眼镜架选购全攻略:从材质、尺寸到脸型适配的底层逻辑

1. 从“戴着难受”到“人镜合一”:一副好眼镜架的底层逻辑每次去配眼镜,你是不是也这样?验光师报出一串精准的度数,然后你走到琳琅满目的镜架区,面对上百副款式,瞬间陷入选择困难。最后,可能只是…

2026/7/29 18:46:59 阅读更多 →
SpringBoot多数据源配置:tech-pdai-spring-demos中的主从分离与读写分离实现

SpringBoot多数据源配置:tech-pdai-spring-demos中的主从分离与读写分离实现

SpringBoot多数据源配置:tech-pdai-spring-demos中的主从分离与读写分离实现 【免费下载链接】tech-pdai-spring-demos Spring Framework5/SpringBoot 2.5.x Demos 项目地址: https://gitcode.com/gh_mirrors/te/tech-pdai-spring-demos 在现代应用开发中&am…

2026/7/29 18:45:58 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻