java如何导出excel
使用 Apache POI 导出 Excel
Apache POI 是一个流行的 Java 库,用于操作 Microsoft Office 格式文件,包括 Excel。以下是使用 POI 导出 Excel 的基本步骤。
添加依赖
在 Maven 项目的 pom.xml 中添加以下依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
创建 Excel 文件 以下代码演示如何创建一个简单的 Excel 文件并写入数据:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelExporter {
public static void exportToExcel() throws IOException {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// 创建表头
Row headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("姓名");
headerRow.createCell(1).setCellValue("年龄");
// 添加数据
Row dataRow = sheet.createRow(1);
dataRow.createCell(0).setCellValue("张三");
dataRow.createCell(1).setCellValue(25);
// 写入文件
try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) {
workbook.write(outputStream);
}
workbook.close();
}
}
使用 EasyExcel 导出 Excel
EasyExcel 是阿里巴巴开源的 Excel 操作工具,性能优异且易于使用。
添加依赖
在 pom.xml 中添加 EasyExcel 依赖:

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
定义数据模型 创建一个简单的数据模型类:
@Data
public class UserData {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private Integer age;
}
导出 Excel 使用 EasyExcel 导出数据到 Excel:
public class EasyExcelExporter {
public static void exportToExcel() {
List<UserData> dataList = new ArrayList<>();
dataList.add(new UserData("张三", 25));
dataList.add(new UserData("李四", 30));
String fileName = "easyexcel_output.xlsx";
EasyExcel.write(fileName, UserData.class).sheet("用户数据").doWrite(dataList);
}
}
处理大数据量导出
对于大数据量导出,可以使用分页查询和流式写入,避免内存溢出。

分页查询与写入 以下示例展示如何分页处理数据并写入 Excel:
public class LargeDataExporter {
public static void exportLargeData() {
String fileName = "large_data.xlsx";
ExcelWriter excelWriter = EasyExcel.write(fileName, UserData.class).build();
try {
WriteSheet writeSheet = EasyExcel.writerSheet("大数据").build();
// 模拟分页查询
int pageSize = 1000;
for (int page = 1; page <= 10; page++) {
List<UserData> data = queryDataByPage(page, pageSize);
excelWriter.write(data, writeSheet);
}
} finally {
excelWriter.finish();
}
}
private static List<UserData> queryDataByPage(int page, int pageSize) {
// 实现分页查询逻辑
return new ArrayList<>();
}
}
自定义样式与格式
可以通过设置单元格样式调整字体、颜色、对齐方式等。
设置单元格样式 以下代码展示如何设置单元格样式:
public class StyleExporter {
public static void exportWithStyle() throws IOException {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("样式示例");
// 创建字体样式
Font headerFont = workbook.createFont();
headerFont.setBold(true);
headerFont.setColor(IndexedColors.BLUE.getIndex());
// 创建单元格样式
CellStyle headerStyle = workbook.createCellStyle();
headerStyle.setFont(headerFont);
headerStyle.setAlignment(HorizontalAlignment.CENTER);
// 应用样式
Row headerRow = sheet.createRow(0);
Cell headerCell = headerRow.createCell(0);
headerCell.setCellValue("带样式的表头");
headerCell.setCellStyle(headerStyle);
// 写入文件
try (FileOutputStream outputStream = new FileOutputStream("styled_output.xlsx")) {
workbook.write(outputStream);
}
workbook.close();
}
}
以上方法涵盖了从基础导出到高级功能的需求,可以根据具体场景选择适合的方案。






