当前位置: 首页 > 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.xdnf.cn/news/1343233.html

相关文章:

  • 开发二手车小程序时,如何确保信息的真实性和可靠性?
  • C#:窗体间传值
  • 计数组合学7.20(平面分拆与RSK算法)
  • 亚矩阵云手机:亚马逊第三方店铺多账号安全合规运营的核心技术支撑
  • Matplotlib 可视化大师系列(六):plt.imshow() - 绘制矩阵与图像的强大工具
  • 2026年计算机毕设推荐:基于大数据的慢性肾病数据可视化分析系统技术选型指南【Hadoop、spark、python】
  • 决策树基础学习教育第一课:从概念到核心原理
  • 【Canvas与旗帜】美国星条旗玻璃光圆饼
  • Lua脚本如何执行主程序的C函数
  • ODYSSEY:开放世界四足机器人的探索与操控,助力长范围任务
  • Node.js 开发 JavaScript SDK 包的完整指南(AI)
  • 基于Node.js服务端的社区报修管理系统/基于express的在线报修管理系统
  • 数据工程师——ETL
  • FastText 词向量全景指南(没那么全)
  • 如何创建一个Cloudfalare worker项目?
  • vue-admin-template权限管理
  • 【python】os.makedirs和with open
  • pytorch与mindspore的简单ViT实现
  • 【数据分享】中国371个城市的坡度矢量数据和excel数据
  • uniappx与uniapp的区别
  • 【在ubuntu下使用vscode打开c++的make项目及编译调试】
  • MongoDB 从入门到实践:全面掌握文档型 NoSQL 数据库核心操作
  • 3-2〔OSCP ◈ 研记〕❘ WEB应用攻击▸WEB安全防护体系
  • 云计算学习100天-第27天
  • 嵌入式学习day34-网络-tcp/udp
  • 新手向:用FastAPI快速构建高性能Web服务
  • Codeforces1043 A至F 题解
  • 关于 java+gradle的弹窗多选应用app
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day10
  • Jmeter自动化性能测试常见问题汇总