当前位置:首页 > Java

java如何读取excel文件

2026-03-03 14:45:53Java

读取Excel文件的常用方法

在Java中读取Excel文件可以通过多种库实现,以下是两种主流方案:

使用Apache POI库

Apache POI是Apache基金会提供的开源库,支持读写Microsoft Office格式文件(包括Excel)。

添加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 ExcelReader {
    public static void readExcel(String filePath) throws Exception {
        Workbook workbook = WorkbookFactory.create(new FileInputStream(filePath));
        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();
    }
}

使用EasyExcel库

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

添加Maven依赖:

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

读取示例代码:

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

public class ExcelReader {
    public static void main(String[] args) {
        String fileName = "example.xlsx";

        // 创建监听器
        ExcelListener listener = new ExcelListener();

        // 读取文件
        EasyExcel.read(fileName, DemoData.class, listener).sheet().doRead();

        // 获取解析后的数据
        List<DemoData> dataList = listener.getDataList();
    }
}

// 数据模型类
class DemoData {
    private String name;
    private Double value;
    // getters/setters
}

// 自定义监听器
class ExcelListener extends AnalysisEventListener<DemoData> {
    private List<DemoData> dataList = new ArrayList<>();

    @Override
    public void invoke(DemoData data, AnalysisContext context) {
        dataList.add(data);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println("解析完成");
    }

    public List<DemoData> getDataList() {
        return dataList;
    }
}

性能优化建议

对于大数据量Excel文件(超过10万行):

java如何读取excel文件

  • 使用POI的流式API(XSSF and SAX)
  • 优先考虑EasyExcel等内存优化方案
  • 分批次处理数据,避免一次性加载全部内容

格式处理注意事项

  • 日期类型单元格需要使用DateUtil处理
  • 公式单元格需要先评估再获取值
  • 合并单元格需要特殊处理边界情况

标签: 文件java
分享给朋友:

相关文章

java如何创建线程

java如何创建线程

创建线程的方法 在Java中,创建线程主要有两种方式:继承Thread类和实现Runnable接口。以下是具体实现方法: 继承Thread类 通过继承Thread类并重写run()方法可以创建线程。…

如何用java

如何用java

用Java实现基础功能 Java是一种广泛使用的编程语言,适用于开发各种应用程序。以下是几个常见功能的实现方法。 打印"Hello, World!" public class HelloWorl…

实现.vue文件

实现.vue文件

创建Vue单文件组件 Vue单文件组件(.vue文件)是Vue.js框架的核心特性之一,它将模板、脚本和样式封装在一个文件中。一个典型的.vue文件结构包含三个部分:<template>、…

java如何创建对象

java如何创建对象

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

如何学好java

如何学好java

理解基础概念 掌握Java的核心概念是学习的基础。包括数据类型、变量、运算符、控制流(如循环和条件语句)、数组等。理解面向对象编程(OOP)的四大特性:封装、继承、多态和抽象。 实践编程练习 通过实…

vue文件下载实现

vue文件下载实现

使用 Blob 对象下载文件 在 Vue 中可以通过创建 Blob 对象实现文件下载。通过将后端返回的二进制数据转换为 Blob,再生成下载链接触发浏览器下载行为。 axios.get('/api/…