当前位置:首页 > Java

java如何生成excel

2026-02-05 13:48:53Java

使用Apache POI库生成Excel文件

Apache POI是Java操作Microsoft Office文件的主流库,支持Excel的.xls和.xlsx格式。

添加Maven依赖:

<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>

创建XSSFWorkbook对象(对应.xlsx格式):

Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");

写入数据到单元格:

Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hello Excel");

设置单元格样式:

CellStyle style = workbook.createCellStyle();
style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell.setCellStyle(style);

保存文件到本地:

try (FileOutputStream out = new FileOutputStream("workbook.xlsx")) {
    workbook.write(out);
}

使用EasyExcel库生成Excel文件

EasyExcel是阿里开源的Excel操作工具,内存消耗更低,适合大数据量导出。

添加Maven依赖:

java如何生成excel

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.3.2</version>
</dependency>

定义数据模型:

@Data
public class DemoData {
    @ExcelProperty("字符串标题")
    private String string;
    @ExcelProperty("日期标题")
    private Date date;
    @ExcelProperty("数字标题")
    private Double doubleData;
}

简单写入:

List<DemoData> list = new ArrayList<>();
EasyExcel.write("easyexcel.xlsx", DemoData.class).sheet("模板").doWrite(list);

使用JExcelAPI生成Excel文件

JExcelAPI是较老的Excel操作库,仅支持.xls格式。

添加Maven依赖:

<dependency>
    <groupId>net.sourceforge.jexcelapi</groupId>
    <artifactId>jxl</artifactId>
    <version>2.6.12</version>
</dependency>

基本写入操作:

java如何生成excel

WritableWorkbook workbook = Workbook.createWorkbook(new File("output.xls"));
WritableSheet sheet = workbook.createSheet("Sheet1", 0);
Label label = new Label(0, 0, "Test");
sheet.addCell(label);
workbook.write();
workbook.close();

性能优化建议

大数据量导出时使用SXSSFWorkbook(POI的流式API):

Workbook workbook = new SXSSFWorkbook(100); // 保留100行在内存中

使用模板方式填充数据,避免频繁创建样式对象。

对于只读场景考虑使用事件模式(POI的Event API)减少内存占用。

文件格式选择

XLS格式(HSSFWorkbook)最大支持65536行数据。

XLSX格式(XSSFWorkbook)支持1048576行数据但内存占用较高。

SXSSFWorkbook通过滑动窗口机制支持超大数据量导出。

标签: javaexcel
分享给朋友:

相关文章

如何安装java

如何安装java

下载Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK下载页面,选择适合操作系统的版本(Windows、macOS或Linux)。推荐下载最新的长期支持(LTS)版本,如Java…

java如何自学

java如何自学

确定学习目标和路径 自学Java需要明确目标,例如开发Web应用、Android应用或后端服务。根据目标选择学习重点,如Java基础、Spring框架或Android开发。制定阶段性计划,从基础语法到…

如何编写java程序

如何编写java程序

安装开发环境 下载并安装JDK(Java Development Kit),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME和PATH正确设置。 选…

java如何创建对象

java如何创建对象

创建对象的基本方法 在Java中,创建对象主要通过new关键字调用构造函数完成。基本语法为: ClassName objectName = new ClassName(); 例如创建String对象…

java如何输入数据

java如何输入数据

输入数据的方法 在Java中,输入数据可以通过多种方式实现,具体取决于输入来源(如控制台、文件、网络等)。以下是几种常见的方法: 使用Scanner类从控制台输入 Scanner类是Java中最常…

如何运行java项目

如何运行java项目

运行Java项目的步骤 确保Java环境已安装 在运行Java项目前,需确认系统已安装Java Development Kit(JDK)。通过命令行输入java -version和javac -ver…