当前位置:首页 > Java

java如何解析excel

2026-03-18 18:11:57Java

使用 Apache POI 解析 Excel

Apache POI 是 Java 中最常用的库之一,用于处理 Microsoft Office 格式文件,包括 Excel。它支持 .xls(HSSF)和 .xlsx(XSSF)格式。

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

解析 .xlsx 文件示例:

import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;

public class ExcelParser {
    public static void main(String[] args) throws Exception {
        FileInputStream file = new FileInputStream("example.xlsx");
        Workbook workbook = WorkbookFactory.create(file);
        Sheet sheet = workbook.getSheetAt(0);

        for (Row row : sheet) {
            for (Cell cell : row) {
                switch (cell.getCellType()) {
                    case STRING:
                        System.out.print(cell.getStringCellValue() + "\t");
                        break;
                    case NUMERIC:
                        System.out.print(cell.getNumericCellValue() + "\t");
                        break;
                    case BOOLEAN:
                        System.out.print(cell.getBooleanCellValue() + "\t");
                        break;
                    default:
                        System.out.print("-\t");
                }
            }
            System.out.println();
        }
        workbook.close();
        file.close();
    }
}

使用 EasyExcel 解析 Excel

EasyExcel 是阿里开源的库,针对大数据量 Excel 解析做了优化,内存占用更低。

添加 Maven 依赖:

java如何解析excel

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

定义数据模型:

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

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

    // getters and setters
}

读取 Excel 文件:

EasyExcel.read("example.xlsx", DemoData.class, new AnalysisEventListener<DemoData>() {
    @Override
    public void invoke(DemoData data, AnalysisContext context) {
        System.out.println("读取到数据: " + data);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println("所有数据解析完成");
    }
}).sheet().doRead();

使用 JExcelAPI 解析 Excel

JExcelAPI 是另一个轻量级的 Java Excel 解析库,但主要支持 .xls 格式。

java如何解析excel

添加 Maven 依赖:

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

解析示例:

import jxl.*;
import java.io.File;

public class JExcelParser {
    public static void main(String[] args) throws Exception {
        Workbook workbook = Workbook.getWorkbook(new File("example.xls"));
        Sheet sheet = workbook.getSheet(0);

        for (int row = 0; row < sheet.getRows(); row++) {
            for (int col = 0; col < sheet.getColumns(); col++) {
                Cell cell = sheet.getCell(col, row);
                System.out.print(cell.getContents() + "\t");
            }
            System.out.println();
        }
        workbook.close();
    }
}

性能与适用场景比较

Apache POI 功能最全面,支持新旧 Excel 格式,适合各种复杂场景。EasyExcel 在处理大文件时性能更优,内存占用更低。JExcelAPI 较老旧,仅适合处理 .xls 格式的简单需求。

对于大数据量 Excel 文件(超过10万行),推荐使用 EasyExcel 的流式读取模式。对于需要复杂格式处理的场景,Apache POI 更合适。

标签: javaexcel
分享给朋友:

相关文章

java如何下载

java如何下载

下载Java的步骤 访问Oracle官方网站或OpenJDK项目页面下载Java开发工具包(JDK)。Oracle JDK适用于商业用途,OpenJDK为开源版本。 打开浏览器,进入Oracle J…

如何打开java

如何打开java

打开 Java 程序的方法 通过命令行运行 Java 程序 确保已安装 Java Development Kit (JDK) 并配置环境变量。使用 javac 编译 .java 文件,生成 .clas…

如何卸载java

如何卸载java

卸载Java的步骤 Windows系统卸载方法 打开控制面板,选择“程序和功能”或“卸载程序”。在列表中找到Java相关条目(如“Java 8 Update 251”),右键选择卸载并跟随向导完成操…

java如何创建数组

java如何创建数组

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

如何配置java环境变量

如何配置java环境变量

下载并安装JDK 从Oracle官网或OpenJDK项目下载适合操作系统的JDK安装包。运行安装程序,按照提示完成安装,默认路径通常为C:\Program Files\Java\jdk-版本号。 配…

如何运行java项目

如何运行java项目

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