在 Java 中导出 Excel 可以使用多种方式,包括使用原生 Java 库、使用第三方库,如 Apache POI、使用开源工具,如 JExcelApi,以及使用现代框架,如 Spring Boot。下面我将介绍其中几种方法的步骤流程和示例代码,包括 Apache POI 和 Spring Boot。
Apache POI 是一个强大的 Java 库,用于创建、读取和修改 Microsoft Office 格式的文档,包括 Excel。以下是使用 Apache POI 导出 Excel 的步骤:
步骤 1:添加 Apache POI 依赖
在项目的 Maven 或 Gradle 配置文件中添加 Apache POI 的依赖坐标:
Maven:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
Gradle:
implementation group: 'org.apache.poi', name: 'poi', version: '4.1.2'
步骤 2:创建 Excel 工作簿和工作表
import org.apache.poi.ss.usermodel.*;
public class ExcelExportExample {
public static void main(String[] args) {
// 创建新的工作簿
Workbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 创建行
Row headerRow = sheet.createRow(0);
// 创建单元格并设置标题
Cell headerCell = headerRow.createCell(0);
headerCell.setCellValue("姓名");
headerCell = headerRow.createCell(1);
headerCell.setCellValue("年龄");
// 创建数据行
Row dataRow = sheet.createRow(1);
// 设置数据
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue("John");
dataCell = dataRow.createCell(1);
dataCell.setCellValue(30);
// 写入到文件或输出流中
try (FileOutputStream fileOut = new FileOutputStream("example.xlsx")) {
workbook.write(fileOut);
} catch (IOException e) {
e.printStackTrace();
}
}
}
这个示例代码创建了一个 Excel 工作簿、一个工作表,以及一些标题和数据。然后,它将工作簿写入名为"example.xlsx"的 Excel 文件中。
如果你使用 Spring Boot,你可以利用 Spring 框架的特性来更容易地导出 Excel。以下是使用 Spring Boot 导出 Excel 的步骤:
步骤 1:添加 Spring Boot Starter 依赖
在 Spring Boot 项目的 Maven 或 Gradle 配置文件中添加 Spring Boot Starter 依赖坐标:
Maven:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Gradle:
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web'
步骤 2:创建一个 Controller 来处理 Excel 导出请求
import org.apache.poi.ss.usermodel.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@RestController
@RequestMapping("/export")
public class ExcelExportController {
@GetMapping("/excel")
public void exportExcel(HttpServletResponse response) throws IOException {
// 创建新的工作簿
Workbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 创建行
Row headerRow = sheet.createRow(0);
// 创建单元格并设置标题
Cell headerCell = headerRow.createCell(0);
headerCell.setCellValue("姓名");
headerCell = headerRow.createCell(1);
headerCell.setCellValue("年龄");
// 创建数据行
Row dataRow = sheet.createRow(1);
// 设置数据
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue("John");
dataCell = dataRow.createCell(1);
dataCell.setCellValue(30);
// 设置响应头
response.setHeader("Content-Disposition", "attachment; filename=example.xlsx");
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
// 写入响应流
workbook.write(response.getOutputStream());
}
}
这个示例代码创建了一个 Spring Boot 控制器,它可以处理 Excel 导出请求。当访问 /export/excel
时,它会生成一个包含示例数据的 Excel 文件,并将其写入响应流中,使浏览器下载。
这些是两种常见的 Java 导出 Excel 的方法,你可以根据你的项目需求选择其中之一。