Maven引入依赖
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>RELEASE</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>RELEASE</version> </dependency>
导出excel
导出excel比较重要的api有以下几个,其他的并无难点
- 创建一个excel文件工作薄;(HSSFWorkbook workbook = new HSSFWorkbook())
- 创建一张表;HSSFSheet sheet = workbook.createSheet("统计表")
- 创建一行;HSSFRow row = sheet.createRow(0)
- 填充一列数据; row.createCell(0).setCellValue("数据")
- 设置一个单元格样式;cell.setCellStyle(style)
注意!!! 如果文件没有提示下载 则不代表生成EXCEL失败 文件会在项目 根目录 中自动生成!!
package com.example.demo.controller; import com.example.demo.domain.User; import com.example.demo.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import javax.servlet.http.HttpServletResponse; import java.io.FileOutputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.util.List; @RestController @RequestMapping(value = "/excel") public class ExcelController { @Autowired private UserService userService; //创建表头 private void createTitle(HSSFWorkbook workbook,HSSFSheet sheet){ HSSFRow row = sheet.createRow(0); //设置列宽,setColumnWidth的第二个参数要乘以256,这个参数的单位是1/256个字符宽度 sheet.setColumnWidth(1,12*256); sheet.setColumnWidth(3,17*256); //设置为居中加粗 HSSFCellStyle style = workbook.createCellStyle(); HSSFFont font = workbook.createFont(); font.setBold(true); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); style.setFont(font); HSSFCell cell; cell = row.createCell(0); cell.setCellValue("ID"); cell.setCellStyle(style); cell = row.createCell(1); cell.setCellValue("显示名"); cell.setCellStyle(style); cell = row.createCell(2); cell.setCellValue("用户名"); cell.setCellStyle(style); cell = row.createCell(3); cell.setCellValue("创建时间"); cell.setCellStyle(style); } //生成user表excel @GetMapping(value = "/getUser") public String getUser(HttpServletResponse response) throws Exception{ HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("统计表"); createTitle(workbook,sheet); List<User> rows = userService.getAll(); //设置日期格式 HSSFCellStyle style = workbook.createCellStyle(); style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); //新增数据行,并且设置单元格数据 int rowNum=1; for(User user:rows){ HSSFRow row = sheet.createRow(rowNum); row.createCell(0).setCellValue(user.getId()); row.createCell(1).setCellValue(user.getName()); row.createCell(2).setCellValue(user.getUsername()); HSSFCell cell = row.createCell(3); cell.setCellValue(user.getCreate_time()); cell.setCellStyle(style); rowNum++; } String fileName = "导出excel例子.xls"; //生成excel文件 buildExcelFile(fileName, workbook); //浏览器下载excel buildExcelDocument(fileName,workbook,response); return "download excel"; } //生成excel文件 protected void buildExcelFile(String filename,HSSFWorkbook workbook) throws Exception{ FileOutputStream fos = new FileOutputStream(filename); workbook.write(fos); fos.flush(); fos.close(); } //浏览器下载excel protected void buildExcelDocument(String filename,HSSFWorkbook workbook,HttpServletResponse response) throws Exception{ response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filename, "utf-8")); OutputStream outputStream = response.getOutputStream(); workbook.write(outputStream); outputStream.flush(); outputStream.close(); } }
注意!!! 如果文件没有提示下载 则不代表生成EXCEL失败 文件会在项目 根目录 中自动生成!!
分类:
Spring Boot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)