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

使用EasyExcel自定义导出表格

一、介绍

作者:fyupeng
技术专栏:☞ https://github.com/fyupeng
分布式博客项目地址:☞ https://github.com/fyupeng/distributed-blog-system-api


留给读者

工作中难免会遇到数据导出的问题,最简单的解决方案就是引入阿里的EasyExcel来解决。

二、代码

  • 实体类
@Data
public class Person {@ExcelProperty(value = "序号", index = 0)private String seqNumber;@ExcelProperty(value = "名称", index = 1)private String name;@ExcelProperty(value = "爱好", index = 2)private String hobby;}
  • 实现代码
private final static DateTimeFormatter DATE_TIME_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd");public static void export(HttpServletRequest request, HttpServletResponse response) throws IOException {Person person = new Person();person.setName("小明");person.setHobby("苹果");List<Person> list = new ArrayList<>();list.add(person);String fileName = "人.xlsx";SXSSFWorkbook sheets = exportExcel(list);response.setContentType("application/octet-stream;charset=UTF8");response.setHeader("Content-Type", "application/vnd.ms-excel");fileName = URLEncoder.encode(fileName, "UTF-8") + DATE_TIME_FORMAT.format(LocalDate.now());response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");response.addHeader("Cache-Control", "no-cache");OutputStream out = response.getOutputStream();sheets.write(out);out.flush();out.close();}private static SXSSFWorkbook exportExcel(List<Person> moduleList) {// 标题String[] title = {"序号", "名称", "爱好"};// 创建一个工作薄SXSSFWorkbook workbook = new SXSSFWorkbook();// 创建一个工作表 sheetSXSSFSheet sheet1 = workbook.createSheet("Sheet1");// 创建第二行Row row = sheet1.createRow(1);// 创建单元格Cell cell = null;// 创建表头for (int i = 0; i < title.length; i++) {cell = row.createCell(i);// 设置样式CellStyle cellStype = workbook.createCellStyle();cellStype.setAlignment(HorizontalAlignment.CENTER); // 设置字体居中// 设置字体Font font = workbook.createFont();font.setFontHeightInPoints((short) 13);cellStype.setFont(font);cell.setCellStyle(cellStype);cell.setCellValue(title[i]);}// 从第三行开始追加数据for (int i = 2; i < (moduleList.size() + 2); i++) {// 创建第i行Row nextRow = sheet1.createRow(i);for (int j = 0; j < 3; j++) {Person person = moduleList.get(i - 2);Cell cell2 = nextRow.createCell(j);if (j == 0) {cell2.setCellValue(String.valueOf(i - 1));} else if (j == 1) {cell2.setCellValue(person.getName());} else if (j == 2) {cell2.setCellValue(person.getHobby());}}}return workbook;}
  • 展示效果
    效果展示

三、总结

生活总能给你带来惊喜,工作中总结未尝不是?

http://www.dtcms.com/a/344143.html

相关文章:

  • 安全、高效、可靠的物理隔离网络安全专用设备———信刻光盘安全隔离与文件单向导入系统!
  • VLLM部署gpt-oss-20b踩坑记录
  • 集成电路学习:什么是SVM支持向量机
  • 快速了解神经网络
  • DigitalOcean Gradient AI平台现已支持OpenAI gpt-oss
  • 2025年大模型选型核心指南:Beyond GPT-4,如何理性评估Qwen、DeepSeek等强者?
  • TDengine IDMP 应用场景:微电网监控
  • nginx-如何卸载和升级编译安装的版本
  • 深入理解 hash -r:解决 Linux 命令缓存难题的关键密钥
  • 线性回归计算
  • 华为云物联网产品架构解析:资源空间、群组、产品、标签、网关、设备与子设备的关系梳理与设置指南
  • AI重构智慧展馆
  • 【数据分享】中国371个城市的坡度矢量数据和excel数据
  • [react] class Component and function Component
  • Android音频学习(十四)——加载音频设备
  • Mysql InnoDB 底层架构设计、功能、原理、源码系列合集【四、事务引擎核心 - MVCC与锁机制】
  • prompt提示词2
  • 【思考】什么是服务器?什么是服务?什么是部署?
  • MongoDB 完整指南
  • 机器人爆发、汽车换代,速腾聚创开始讲新故事
  • 线性规划在数学建模中的应用
  • MyCAT高可用
  • Go语言实战案例-使用SQLite实现本地存储
  • Codeforces1043 A至F 题解
  • 【基础-判断】合理的动效可以帮助引导、取悦用户,减少等待时间,更能增加产品识别度,让用户舒适的的使用产品
  • 【序列晋升】12 Spring Boot 约定优于配置
  • 基于 Docker 的高可用 WordPress 集群部署:分布式 Nginx + Keepalived、MySQL 主从复制与 ProxySQL 读写分离
  • 行缓存(line buffer)在图像卷积中的工作方式
  • 【iOS】YYModel第三方库源码
  • 飞机起落架减震筒的深孔检测方法探究 - 激光频率梳 3D 轮廓检测