Java Spring Boot输出Excel文件流
在Java开发中,经常需要将数据导出到Excel文件中。Spring Boot是一个非常流行的Java框架,它提供了许多简化开发的功能。本文将介绍如何使用Spring Boot输出Excel文件流,并提供相应的代码示例。
准备工作
在开始编写代码之前,我们需要准备一些依赖库。打开你的项目的pom.xml文件,并添加以下依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
这些依赖库将帮助我们处理Excel文件的创建和操作。接下来,我们将编写一个简单的Spring Boot应用程序,并添加一个REST接口来生成Excel文件。
创建Spring Boot应用程序
首先,我们创建一个新的Spring Boot项目。打开终端或命令行窗口,并执行以下命令:
$ mkdir springboot-excel
$ cd springboot-excel
$ curl -o springboot-excel.zip
$ unzip springboot-excel.zip
$ rm springboot-excel.zip
这些命令将创建一个名为springboot-excel
的新目录,并在其中下载Spring Boot的初始代码。接下来,我们进入该目录并使用任何文本编辑器打开pom.xml
文件。
添加上述提到的依赖库,并确保文件内容如下:
<project xmlns="
xmlns:xsi="
xsi:schemaLocation="
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>springboot-excel</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加Excel依赖库 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
保存并关闭pom.xml
文件。
创建REST接口
接下来,我们创建一个REST接口来生成Excel文件。在src/main/java/com/example/springbootexcel
目录下创建一个名为ExcelController.java
的新文件,并添加以下内容:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@RestController
public class ExcelController {
@GetMapping("/excel")
public ResponseEntity<byte[]> generateExcel() throws IOException {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet 1");
// 创建标题行
Row headerRow = sheet.createRow(0);
Cell headerCell = headerRow.createCell(0);
headerCell.setCellValue("Name");
// 创建数据行
Row dataRow = sheet.createRow(1);
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue("John Doe");
// 将工作簿写入字节数组流
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
workbook.write(outputStream);
workbook.close();
// 设置HTTP响应头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", "data.xlsx");
return ResponseEntity.ok()
.headers