当前位置:首页 > Java

java 如何导出excel

2026-04-09 07:35:33Java

使用 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 ExcelExporter {
    public static void exportToExcel(String filePath) 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(filePath)) {
            workbook.write(outputStream);
        }
        workbook.close();
    }
}

使用 EasyExcel 库导出 Excel

EasyExcel 是阿里巴巴开源的 Excel 操作库,性能优异且 API 简洁:

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

public class EasyExcelExporter {
    public static class UserData {
        private String name;
        private int age;
        // getters and setters
    }

    public static void exportToExcel(String filePath) {
        List<UserData> dataList = Arrays.asList(
            new UserData("张三", 25),
            new UserData("李四", 30)
        );

        EasyExcel.write(filePath, UserData.class)
                .sheet("用户数据")
                .doWrite(dataList);
    }
}

设置单元格样式

通过 POI 可以自定义单元格样式:

java 如何导出excel

CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBold(true);
font.setColor(IndexedColors.RED.getIndex());
style.setFont(font);

Cell cell = row.createCell(0);
cell.setCellValue("重要数据");
cell.setCellStyle(style);

导出大数据量时的优化

处理大量数据时需注意内存管理:

// 使用 SXSSFWorkbook 进行流式写入
Workbook workbook = new SXSSFWorkbook(100); // 保留100行在内存中
Sheet sheet = workbook.createSheet();

for (int i = 0; i < 100000; i++) {
    Row row = sheet.createRow(i);
    row.createCell(0).setCellValue("数据" + i);
}

导出复杂 Excel 文件

合并单元格和创建多 sheet 示例:

java 如何导出excel

// 合并单元格
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));

// 创建多个sheet
Sheet sheet2 = workbook.createSheet("报表");
// 添加数据到sheet2...

常见问题解决

文件扩展名问题:XSSFWorkbook 生成 .xlsx 格式,HSSFWorkbook 生成 .xls 格式。

中文乱码问题:确保字符串使用 UTF-8 编码。

内存溢出问题:大数据量使用 SXSSFWorkbook 替代 XSSFWorkbook。

标签: javaexcel
分享给朋友:

相关文章

java如何创建文件

java如何创建文件

使用 File 类创建文件 通过 File 类的 createNewFile() 方法创建文件。此方法返回布尔值,表示文件是否成功创建。 import java.io.File; import ja…

java如何自学

java如何自学

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

如何编译java

如何编译java

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证是否安装成功。若未安装,需从Oracl…

java如何获取当前时间

java如何获取当前时间

获取当前时间的方法 在Java中,可以通过多种方式获取当前时间。以下是几种常见的方法: 使用 java.util.Date Date currentDate = new Date(); Syste…

java如何遍历map

java如何遍历map

遍历Map的几种方法 在Java中,遍历Map有多种方式,可以根据需求选择合适的方法。以下是常见的几种遍历方式: 使用entrySet遍历 通过entrySet()方法获取键值对的集合,可以同时访问…

java如何实现多继承

java如何实现多继承

在Java中,由于语言设计本身不支持多继承(即一个类不能直接继承多个父类),但可以通过以下方式间接实现类似多继承的效果: 使用接口实现多继承 接口允许一个类实现多个接口,从而继承多个抽象行为。接口中…