springboot+hutool工具类,excel导出

server/2025/3/21 6:36:44/

 java部分

java"> <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.31</version></dependency>
java">    @Overridepublic void exportList(Long appId, String keywords, String status, HttpServletRequest request, HttpServletResponse response) {List<QuestionInstruct> list = getList(appId, keywords, status);// 设置响应头response.setHeader("Content-Disposition", "attachment; filename=export.xlsx");response.setHeader("Content-Type", "application/octet-stream");try (ExcelWriter writer = ExcelUtil.getWriter(true); ServletOutputStream out = response.getOutputStream()) {writer.addHeaderAlias("question", "问题");writer.addHeaderAlias("answer", "答案");writer.addHeaderAlias("statusName", "状态");writer.setOnlyAlias(true);// 设置列宽writer.setColumnWidth(0, 60);writer.setColumnWidth(1, 60);writer.setColumnWidth(2, 20);// 设置行高writer.getSheet().setDefaultRowHeightInPoints(30); // 设置默认行高为20点writer.write(list, true);writer.flush(out, true);response.setStatus(HttpServletResponse.SC_OK);} catch (Exception e) {e.printStackTrace();response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);}}

 vue部分,是自己封装的js

javascript">async function exportExcel(url, data, fileName = 'exported_excel.xlsx', config = {}) {const axiosConfig = {...config,responseType: 'blob'};const res = await get(url, data, axiosConfig);if (res.size>0) {const blob = new Blob([res], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});const urlObj = window.URL.createObjectURL(blob);const link = document.createElement('a');link.href = urlObj;link.setAttribute('download', fileName);document.body.appendChild(link);link.click();document.body.removeChild(link);window.URL.revokeObjectURL(urlObj);}}

在封装get请求的时候,一定要注意一个地方,要不会把返回的数据当成json解析,前台会报错,但是依然可以使用

javascript">   <n-button strong secondary type="info" :loading="loading" @click="exportExcel" ><jb-icon v-if="!loading" :local="true" icon="ant-design:download-outlined" height="20"></jb-icon>&nbsp;导出问答的调教列表</n-button>// 导出excel
const exportExcel = async () => {loading.value = true;await JBoltApi.exportExcel("/questionInstruct/exportList", pageConditions, '问答调教列表.xlsx').then((res) => {loading.value = false;});};


http://www.ppmy.cn/server/176703.html

相关文章

能源监控软件UI界面设计:平衡功能性与审美性的艺术

在当今社会&#xff0c;能源作为推动经济发展的重要基石&#xff0c;其高效管理和合理利用显得尤为重要。随着科技的进步&#xff0c;能源监控软件应运而生&#xff0c;成为连接能源使用者与管理者之间的桥梁。而软件的UI&#xff08;用户界面&#xff09;设计&#xff0c;作为…

python+requests实现的接口自动化测试

框架详细教程前段时间由于公司测试方向的转型&#xff0c;由原来的web页面功能测试转变成接口测试&#xff0c;之前大多都是手工进行&#xff0c;利用postman和jmeter进行的接口测试&#xff0c;后来&#xff0c;组内有人讲原先web自动化的测试框架移驾成接口的自动化框架&…

【C++】二叉树和堆的链式结构(下)

本篇博客给大家带来的是用C语言来实现堆链式结构和二叉树的实现&#xff01; &#x1f41f;&#x1f41f;文章专栏&#xff1a;数据结构 &#x1f680;&#x1f680;若有问题评论区下讨论&#xff0c;我会及时回答 ❤❤欢迎大家点赞、收藏、分享&#xff01; 今日思想&#xff…

一文梳理清楚Vsync/Choreographer/SurfaceFlinger/Surface/SurfaceHolder/硬件刷新频率关系

在 Android 应用开发中,流畅的 UI 体验是用户感知的核心。为了实现这一点,Android 系统构建了一套复杂的图形渲染架构,涉及垂直同步信号(VSync)、编舞者(Choreographer)、硬件刷新频率、SurfaceFlinger、Surface 和 SurfaceHolder 等多个关键组件。本文将深入解析这些组…

【HarmonyOS Next之旅】DevEco Studio使用指南(三)

目录 1 -> 一体化工程迁移 1.1 -> 自动迁移 1.2 -> 手动迁移 1.2.1 -> API 10及以上历史工程迁移 1.2.2 -> API 9历史工程迁移 1 -> 一体化工程迁移 DevEco Studio从 NEXT Developer Beta1版本开始&#xff0c;提供开箱即用的开发体验&#xff0c;将SD…

快速进行数据验证的优雅实现-注解

javax.validation包下的注解主要用于数据验证&#xff0c;确保数据符合特定的约束条件。以下是一个详细的表格&#xff0c;列出了这些注解的名称、作用、使用场景和示例&#xff1a; Excel 表格示例 注解名称作用使用场景示例AssertFalse确保字段值为 false布尔字段的验证Ass…

《Linux 网络架构:基于 TCP 协议的多人聊天系统搭建详解》

一、系统概述 本系统是一个基于 TCP 协议的多人聊天系统&#xff0c;由一个服务器和多个客户端组成。客户端可以连接到服务器&#xff0c;向服务器发送消息&#xff0c;服务器接收到消息后将其转发给其他客户端&#xff0c;实现多人之间的实时聊天。系统使用 C 语言编写&#x…

【USTC 计算机网络】第一章:计算机网络概述 - Internet 结构与 ISP、分组延时与丢失、协议层次与服务模型

本文首先介绍了互联网的分层架构与互联网服务提供商&#xff08;ISP&#xff09;在互联网中扮演的角色&#xff0c;接着介绍了分组在传输过程中的延时与丢失问题&#xff0c;以及如何使用一些如 Ping 与 Traceroute 这样的简单网络诊断工具检测网络情况&#xff0c;最后介绍了计…