java如何生成excel
使用 Apache POI 库生成 Excel
Apache POI 是 Java 中操作 Microsoft Office 文档的流行库。以下示例展示如何创建一个简单的 Excel 文件并写入数据:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelGenerator {
public static void main(String[] args) throws IOException {
Workbook workbook = new XSSFWorkbook(); // 创建 XLSX 文件
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();
}
}
依赖配置(Maven):
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
使用 EasyExcel 库生成 Excel
EasyExcel 是阿里开源的 Excel 操作库,适合大数据量导出,内存占用低。
import com.alibaba.excel.EasyExcel;
import java.util.ArrayList;
import java.util.List;
public class EasyExcelExample {
public static class User {
private String name;
private int age;
// 省略 getter/setter
}
public static void main(String[] args) {
List<User> data = new ArrayList<>();
data.add(new User("张三", 25));
data.add(new User("李四", 30));
EasyExcel.write("output.xlsx", User.class)
.sheet("用户列表")
.doWrite(data);
}
}
依赖配置(Maven):

<dependency>
<groupId>com.alibaba.easyexcel</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
使用 JExcelAPI 生成 Excel(仅支持 XLS)
JExcelAPI 是一个轻量级库,适合处理旧版 Excel 格式(.xls)。
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import java.io.File;
public class JExcelExample {
public static void main(String[] args) throws Exception {
WritableWorkbook workbook = Workbook.createWorkbook(new File("output.xls"));
WritableSheet sheet = workbook.createSheet("Sheet1", 0);
sheet.addCell(new Label(0, 0, "姓名"));
sheet.addCell(new Label(1, 0, "年龄"));
sheet.addCell(new Label(0, 1, "张三"));
sheet.addCell(new Label(1, 1, "25"));
workbook.write();
workbook.close();
}
}
依赖配置(Maven):
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
生成 Excel 的高级功能
-
样式设置(Apache POI 示例):

CellStyle style = workbook.createCellStyle(); Font font = workbook.createFont(); font.setBold(true); style.setFont(font); headerRow.getCell(0).setCellStyle(style); -
合并单元格:
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2)); -
公式计算:
dataRow.createCell(2).setCellFormula("A2*B2");
根据需求选择合适的库:
- Apache POI:功能全面,支持复杂操作。
- EasyExcel:适合大数据量和简单导出。
- JExcelAPI:仅需处理旧版 Excel 时使用。






