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

cn.hutool.poi导出,导出

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;@Retention(RetentionPolicy.RUNTIME)
public @interface Exceli {String name() default ""; // 表头名称int orderNum() default 0; // 排序序号
}
 public static void downloadExcelByExceli(List<?> data, Class s, HttpServletResponse response) {ExcelWriter writer = ExcelUtil.getWriter(true);writer.setSheet("sheet1");Sheet sheet = writer.getSheet();// 获取所有带@Excel注解的字段并按顺序排序List<Field> fields = Arrays.stream(s.getDeclaredFields()).filter(f -> f.isAnnotationPresent(Exceli.class)).sorted(Comparator.comparingInt(f -> f.getAnnotation(Exceli.class).orderNum())).collect(Collectors.toList());// 创建表头行Row headerRow = sheet.createRow(0);for (int i = 0; i < fields.size(); i++) {Field field = fields.get(i);Exceli excel = field.getAnnotation(Exceli.class);Cell cell = headerRow.createCell(i);// 设置表头文本
            cell.setCellValue(excel.name());}List<Map<String, Object>> collect = data.stream().map(item -> {Map<String, Object> map = new LinkedHashMap<>();for (Field field : fields) {try {field.setAccessible(true);Object value = field.get(item);Exceli excel = field.getAnnotation(Exceli.class);map.put(excel.name(), value);} catch (IllegalAccessException e) {throw new RuntimeException("字段值获取失败:" + field.getName(), e);}}return map;}).collect(Collectors.toList());writer.write(collect, true);// 输出响应response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setHeader("Content-Disposition", "attachment;filename=data.xlsx");ServletOutputStream out = null;try {out = response.getOutputStream();} catch (IOException e) {log.error("下载文件失败", e);response.setContentType(MediaType.APPLICATION_JSON_VALUE);response.setStatus(500);throw new ResponseException(-1, "下载出错");} finally {if (out != null) {writer.flush(out, true);IoUtil.close(out);}}}

 

http://www.jsqmd.com/news/337831/

相关文章:

  • ADMIT——ADMIT:Few-shot Knowledge Poisoning Attacks on RAG-based Fact Checking
  • 盘点2025年最值得购买的印刷机品牌排行榜,全伺服前缘送纸印刷开槽模切联动线/高速全自动水墨印刷开槽模切机/印刷开槽模切机印刷机制造厂家推荐 - 品牌推荐师
  • 必收藏|招聘风向标大变!小白程序员必看的大模型入门转型指南
  • 2026年山西羊杂粉哪家好吃,哪家口碑好,哪家评价高,这几家本地老店藏着最地道的大同暖香 - 速递信息
  • SSM毕设项目推荐-基于ssm的铜产品商城采购选购铜材料销售管理系统【附源码+文档,调试定制服务】
  • 2026年全国仓库地坪漆厂家权威推荐榜及选型指南 全链条服务 多场景适配优选 - 深度智识库
  • 2026年通州橱柜定制厂家权威推荐榜:通州全屋定制、通州橱柜定制、如东橱柜定制、如东装修设计、如皋全屋定制、如皋橱柜定制选择指南 - 优质品牌商家
  • 上海智推时代联系方式全解析:官方正规渠道速查 - 速递信息
  • SSM毕设项目推荐-基于SSM框架技术的房屋代管租赁系统的设计与实现基于ssm的房屋代管租赁系统的设计与实现【附源码+文档,调试定制服务】
  • 如何通过二维码方便手机观看视频?
  • 智能体元年来了:程序员必懂的 6 大 Agent 工作流设计模式(附实战案例)
  • AI 英语学习 APP 的开发
  • 美国AI求职陪跑哪家高效:2025年AI陪跑揭秘 - 技研备忘录
  • 关于下课时间打游戏的检查
  • Ant Design 项目集成阿里 Iconfont 图标库
  • 2026年企微服务热线电话多少?官方最新联系方式解析 - 品牌2025
  • 2026年全国仓库地坪漆哪家好?多家厂家核心优势拆解 聚焦各类需求 - 深度智识库
  • 美国AI求职辅导哪家高效:权威AI辅导榜单 - 技研备忘录
  • LeetCode经典算法面试题 #114:二叉树展开为链表(递归、迭代、Morris等多种实现方案详细解析)
  • 2026年模具开模厂家最新推荐:模具开模、模具选择指南 - 优质品牌商家
  • SSM毕设选题推荐:基于ssm的常熟非遗数字化管理系统基于SSM的常熟非遗数字化管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 东南亚电商海外仓留不住客户?原来是因为这4个管理误区! - 跨境小媛
  • 【回眸】FBI头马XHS运营策略初版
  • SSM毕设选题推荐:基于ssm的房屋代管租赁系统的设计与实现基于SSM框架技术的房屋代管租赁系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 2026年电缆沟盖板厂家权威推荐榜:成品复合电缆沟盖板、扣槽电缆沟盖板、树脂电缆沟盖板、雨水井盖、高分子复合圆形井盖选择指南 - 优质品牌商家
  • 学习2.3
  • SSM毕设选题推荐:基于ssm的铜产品商城管理系统铜业材料销售批发采购平台【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 减温减压装置厂家哪家信誉好,为你选购提供参考 - 工业设备
  • NMN哪款牌子好?2026高活性NMN推荐盼生派C9NMN,高纯度抗衰 - 速递信息
  • SSM毕设选题推荐:基于SSM的一线式酒店管理系统一体化酒店管理基于SSM客房订餐系统【附源码、mysql、文档、调试+代码讲解+全bao等】