当前位置:首页 > Java

java 如何导出excel

2026-02-04 23:15:26Java

使用 Apache POI 库导出 Excel

Apache POI 是 Java 操作 Microsoft Office 文件的开源库,支持 Excel 的读写。以下是使用 POI 导出 Excel 的基本方法。

确保项目中已添加 POI 依赖(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>

创建 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(); // 创建 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();
    }
}

使用 EasyExcel 库导出 Excel

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

添加 EasyExcel 依赖(Maven 示例):

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

通过注解定义导出模型:

import com.alibaba.excel.annotation.ExcelProperty;

public class UserData {
    @ExcelProperty("姓名")
    private String name;

    @ExcelProperty("年龄")
    private int age;

    // 构造方法、Getter 和 Setter 省略
}

执行导出操作:

import com.alibaba.excel.EasyExcel;
import java.util.ArrayList;
import java.util.List;

public class EasyExcelExporter {
    public static void export() {
        List<UserData> dataList = new ArrayList<>();
        dataList.add(new UserData("张三", 25));
        dataList.add(new UserData("李四", 30));

        EasyExcel.write("output.xlsx", UserData.class)
                .sheet("用户信息")
                .doWrite(dataList);
    }
}

处理大数据量导出

当数据量较大时,需采用分页查询或流式写入避免内存溢出。

使用 POI 的 SXSSFWorkbook(流式写入):

Workbook workbook = new SXSSFWorkbook(100); // 保留 100 行在内存中
// 后续操作与 XSSFWorkbook 相同

使用 EasyExcel 的分页查询写入:

EasyExcel.write("large_data.xlsx", UserData.class)
        .sheet()
        .doWrite(() -> {
            // 实现分页查询逻辑,返回 Iterable
            return fetchDataByPage(pageSize);
        });

自定义样式和格式

设置单元格样式(POI 示例):

CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBold(true);
style.setFont(font);
cell.setCellStyle(style);

设置日期格式:

java 如何导出excel

CellStyle dateStyle = workbook.createCellStyle();
CreationHelper createHelper = workbook.getCreationHelper();
dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-MM-dd"));
cell.setCellStyle(dateStyle);

标签: javaexcel
分享给朋友:

相关文章

java如何

java如何

Java 基础语法 Java 是一种面向对象的编程语言,语法相对严谨。每个 Java 程序必须包含一个 main 方法作为程序入口。以下是一个简单的 Java 程序示例: public class…

java如何输入数组

java如何输入数组

输入数组的方法 在Java中,可以通过多种方式输入数组,具体取决于输入源(如控制台、文件等)和数组类型(如基本类型或对象类型)。以下是几种常见的方法: 使用Scanner从控制台输入 对于基本数据类…

java如何删除文件

java如何删除文件

删除文件的基本方法 使用 java.io.File 类的 delete() 方法可以删除文件。如果文件存在且删除成功,返回 true;否则返回 false。 import java.io.Fil…

java如何产生随机数

java如何产生随机数

使用 Math.random() 方法 Math.random() 生成一个范围在 [0.0, 1.0) 的伪随机 double 值。通过缩放和偏移可以生成指定范围的随机数。 double ra…

如何搭建java开发环境

如何搭建java开发环境

下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK版本。运行安装程序并按照提示完成安装,建议选择默认路径以减少配置复杂度。 配置环境变量 在系统环境变量中添加JAVA_HO…

java如何取绝对值

java如何取绝对值

取绝对值的方法 在Java中,取绝对值可以通过以下几种方式实现: 使用Math.abs()方法 Math.abs()是Java中最常用的取绝对值方法,适用于多种数据类型: int absolute…