当前位置:首页 > Java

java 如何导出excel

2026-03-03 10:28:00Java

使用 Apache POI 库导出 Excel

Apache POI 是一个流行的 Java 库,用于处理 Microsoft Office 格式文件,包括 Excel。以下是一个简单的示例代码,展示如何创建一个 Excel 文件并写入数据。

java 如何导出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 main(String[] args) {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");

        Row headerRow = sheet.createRow(0);
        headerRow.createCell(0).setCellValue("Name");
        headerRow.createCell(1).setCellValue("Age");

        Row dataRow = sheet.createRow(1);
        dataRow.createCell(0).setCellValue("John Doe");
        dataRow.createCell(1).setCellValue(30);

        try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) {
            workbook.write(outputStream);
            workbook.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用 EasyExcel 库导出 Excel

EasyExcel 是阿里巴巴开源的 Excel 操作工具,性能优异且使用简单。以下是一个示例代码。

java 如何导出excel

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

public class EasyExcelExporter {
    public static void main(String[] args) {
        String fileName = "output.xlsx";
        List<DemoData> dataList = new ArrayList<>();
        dataList.add(new DemoData("John Doe", 30));
        dataList.add(new DemoData("Jane Smith", 25));

        EasyExcel.write(fileName, DemoData.class).sheet("Sheet1").doWrite(dataList);
    }

    public static class DemoData {
        private String name;
        private int age;

        public DemoData(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public String getName() { return name; }
        public int getAge() { return age; }
    }
}

导出大数据量的优化

当需要导出大量数据时,可以使用 SXSSFWorkbook(POI 的流式 API)或 EasyExcel 的流式写入功能,避免内存溢出。

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;

public class LargeExcelExporter {
    public static void main(String[] args) {
        Workbook workbook = new SXSSFWorkbook(100); // 保留 100 行在内存中
        Sheet sheet = workbook.createSheet("Sheet1");

        for (int i = 0; i < 10000; i++) {
            Row row = sheet.createRow(i);
            row.createCell(0).setCellValue("Data " + i);
            row.createCell(1).setCellValue(i);
        }

        try (FileOutputStream outputStream = new FileOutputStream("large_output.xlsx")) {
            workbook.write(outputStream);
            ((SXSSFWorkbook) workbook).dispose(); // 清理临时文件
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

设置单元格样式

可以通过 Apache POI 设置单元格样式,如字体、颜色、边框等。

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;

public class StyledExcelExporter {
    public static void main(String[] args) {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");

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

        Row headerRow = sheet.createRow(0);
        Cell headerCell = headerRow.createCell(0);
        headerCell.setCellValue("Header");
        headerCell.setCellStyle(headerStyle);

        try (FileOutputStream outputStream = new FileOutputStream("styled_output.xlsx")) {
            workbook.write(outputStream);
            workbook.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上方法涵盖了从基础到高级的 Excel 导出需求,可以根据具体场景选择合适的工具和优化方式。

标签: javaexcel
分享给朋友:

相关文章

如何删除java

如何删除java

卸载 Java 的步骤 Windows 系统: 打开控制面板,选择“程序和功能”或“卸载程序”,在列表中找到 Java 相关条目(如“Java Runtime Environment”或“Java D…

java如何创建数组

java如何创建数组

创建数组的基本方法 在Java中,数组是固定大小的同类型元素集合。创建数组需要声明数组类型并初始化。 声明数组 语法格式为 数据类型[] 数组名 或 数据类型 数组名[]: int[] arr1;…

java如何配置环境变量

java如何配置环境变量

配置Java环境变量的方法 下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK安装包。运行安装程序并按照提示完成安装,记下JDK的安装路径(例如C:\Program File…

如何选择java培训

如何选择java培训

评估培训机构资质 选择有正规资质的机构,查看其营业执照、办学许可证等。优先考虑具备人力资源和社会保障部或教育部认证的机构,这类机构的教学质量和课程设置通常更规范。 考察课程内容与行业需求匹配度…

java面试官如何面试别人

java面试官如何面试别人

考察基础知识 从Java核心概念入手,包括面向对象特性(封装、继承、多态)、集合框架(ArrayList vs LinkedList、HashMap实现原理)、异常处理机制、多线程(线程池、锁机制)等…

java实现vue接口

java实现vue接口

Java 实现 Vue 接口的方法 在 Java 中实现 Vue 前端调用的接口,通常需要使用 Spring Boot 框架构建 RESTful API。以下是具体的实现步骤和代码示例。 创建 Sp…