常见网站性能优化手段,潍坊企业建站系统,微信网页版手机登录入口,iis 5 如何添加网站前言
前面给大家介绍了动态表头的导入#xff0c;这篇文章给大家介绍如何实现导出
前面给大家介绍了动态表头的导入#xff0c;我们了解了如何通过EasyExcel灵活地读取结构不固定的Excel文件。这次#xff0c;我们将目光转向数据导出——即如何将数据以Excel文件的形式输出…前言
前面给大家介绍了动态表头的导入这篇文章给大家介绍如何实现导出
前面给大家介绍了动态表头的导入我们了解了如何通过EasyExcel灵活地读取结构不固定的Excel文件。这次我们将目光转向数据导出——即如何将数据以Excel文件的形式输出给用户。这在很多应用场景中都非常有用比如报表生成、数据备份和迁移等。下面我将详细讲解如何在Spring Boot应用中使用EasyExcel来实现数据的导出功能。
首先先上EasyExcel的官网EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网 1. 添加依赖 首先我们需要确保项目中已经包含了EasyExcel的依赖。如果你还没有添加请打开pom.xml文件并加入以下Maven依赖
dependencygroupIdcom.alibaba.easyexcel/groupIdartifactIdeasyexcel/artifactIdversion2.2.3/version
/dependency
请根据你的项目需求选择合适的版本号通常建议使用最新稳定版。 2.实现
controller层 在Controller层中我们定义了一个处理导出请求的API端点。该方法接收一个HTTP POST请求并根据传入的参数DataFromVo调用服务层的方法来执行具体的导出逻辑。
/*** 导出检查计划数据* author zqx* date 2023/12/6 17:48*/
RestController
RequestMapping(/inspection)
public class InspectionPlanController {Autowiredprivate SiteInspectPlanHomeService siteInspectPlanHomeService;/*** 导出检查计划信息为Excel文件。** param request HTTP请求对象用于获取请求信息。* param response HTTP响应对象用于设置响应头和写出文件流。* param dataFromVo 包含查询条件的数据传输对象。*/PostMapping(/exportInspectionPlan)ApiOperation(value 导出检查计划信息, notes 将检查计划信息导出为Excel文件)public void exportInspectionPlan(HttpServletRequest request, HttpServletResponse response, RequestBody DataFromVo dataFromVo) {log.info(执行了POST请求);log.info(参数{}, dataFromVo);siteInspectPlanHomeService.exportInspectionPlan(request, response, dataFromVo);}
}
创建实体类 为了使EasyExcel能够正确地映射Java对象到Excel表格中的列我们需要创建一个与Excel结构相匹配的实体类。这里我们使用ExportPlanInformationVo作为示例。
/*** 导出信息对象* Author zqx* Date 2023/12/6 9:26*/
Data
HeadRowHeight(30) // 设置头部行高
ContentRowHeight(25) // 设置内容行高
ColumnWidth(20) // 设置列宽
HeadFontStyle(fontName 宋体, fontHeightInPoints 11)
public class ExportPlanInformationVo implements Serializable {ApiModelProperty(名称)ExcelProperty(名称)private String planName;ApiModelProperty(类型)Dict(code inspectionType, fieldName inspectionTypeName)ExcelProperty(类型)private String inspectionType;ApiModelProperty(主题名称)ExcelProperty(主题)private String themeName;ApiModelProperty(计划起止时间)ExcelProperty(计划起止时间)private String startEndTime;ApiModelProperty(年度)ExcelProperty(年度)private String inspectionYear;ApiModelProperty(单位数量)ExcelProperty(单位数量)private String orgNoCount;ApiModelProperty(户数)ExcelProperty(户数)private String taskNum;ApiModelProperty(已完成户数)ExcelProperty(已完成户数)private String completedNumber;ApiModelProperty(完成率)ExcelProperty(完成率)private String inspectionCompletionRate;ApiModelProperty(超期状态)ExcelProperty(超期状态)private String isItOverdue;ApiModelProperty(状态)Dict(code planStatus, fieldName planStatusName)ExcelProperty(状态)private String planStatus;ApiModelProperty(创建时间)ExcelProperty(创建时间)private String createTime;ApiModelProperty(结束日期)ExcelIgnore // 忽略此字段不输出到Excel中private String endTime;
}
Service 层 在Service层中我们将具体实现导出逻辑。这个例子展示了如何准备要导出的数据并通过EasyExcel库将其写入HTTP响应流中以便用户可以下载生成的Excel文件。 Service
public class SiteInspectPlanHomeService {/*** 导出检查计划信息为Excel文件。** param request HTTP请求对象用于获取请求信息。* param response HTTP响应对象用于设置响应头和写出文件流。* param dataFromVo 包含查询条件的数据传输对象。*/Overridepublic void exportInspectionPlan(HttpServletRequest request, HttpServletResponse response, DataFromVo dataFromVo) {try {// 根据业务需求处理dataFromVo并获取要导出的数据列表ListExportPlanInformationVo planVos prepareDataForExport(dataFromVo);// 给文件命名String fileName 现场巡视计划报表;// 设置响应内容类型为Excel格式并编码防止中文乱码问题response.setContentType(application/vnd.ms-excel);response.setCharacterEncoding(UTF-8);// 设置文件名并处理URL编码fileName URLEncoder.encode(fileName, UTF-8).replaceAll(\\, %20);// 文件下载方式(附件下载还是在当前浏览器打开)response.setHeader(Content-disposition, attachment;filename fileName .xlsx);// 使用EasyExcel进行数据写入操作EasyExcel.write(response.getOutputStream(), ExportPlanInformationVo.class).sheet(现场巡视计划报表) // 指定工作表名称.doWrite(planVos); // 写入数据到Excel文件} catch (Exception e) {log.error(导出过程中出现错误 {}, e);throw new RuntimeException(导出失败请稍后再试);}}/*** 准备要导出的数据。** param dataFromVo 查询条件* return 要导出的数据列表*/private ListExportPlanInformationVo prepareDataForExport(DataFromVo dataFromVo) {// 这里需要根据你的业务逻辑去查询数据库或其它数据源并转换成ExportPlanInformationVo列表// 示例代码ListExportPlanInformationVo planVos new ArrayList();// 填充数据...return planVos;}
} 最后 上述代码段详细描述了如何在Spring Boot应用程序中集成EasyExcel以实现检查计划信息的导出功能。每个部分都包含了必要的注释和说明确保开发者能够理解每一行代码的作用以及整个流程的工作原理。此外还特别注意了对异常情况的处理保证即使发生错误也能够给出适当的反馈信息。