当前位置:首页 > Java

java如何读取excel文件

2026-02-05 03:30:05Java

使用 Apache POI 读取 Excel 文件

Apache POI 是 Java 中处理 Office 文档的流行库,支持 .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 ExcelReader {
    public static void main(String[] args) throws Exception {
        String filePath = "example.xlsx";
        FileInputStream fis = new FileInputStream(filePath);
        Workbook workbook = WorkbookFactory.create(fis);
        Sheet sheet = workbook.getSheetAt(0);

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

使用 EasyExcel 读取大文件

EasyExcel 是阿里开源的库,适合处理大数据量的 Excel 文件,内存占用更低。

java如何读取excel文件

添加 Maven 依赖:

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

定义实体类:

@Data
public class DemoData {
    @ExcelProperty("列名1")
    private String column1;
    @ExcelProperty("列名2")
    private Integer column2;
}

监听器方式读取:

java如何读取excel文件

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;

public class DemoDataListener implements ReadListener<DemoData> {
    @Override
    public void invoke(DemoData data, AnalysisContext context) {
        System.out.println(data);
    }

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

调用读取方法:

EasyExcel.read("large_file.xlsx", DemoData.class, new DemoDataListener())
    .sheet()
    .doRead();

处理日期和特殊格式

对于日期类型单元格,需要特殊处理:

if (cell.getCellType() == CellType.NUMERIC && DateUtil.isCellDateFormatted(cell)) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    cellValue = sdf.format(cell.getDateCellValue());
}

性能优化建议

大数据量文件建议使用流式读取模式,避免内存溢出。Apache POI 提供 SXSSFWorkbook 用于写操作,读操作可使用 XSSFReader 进行 SAX 解析。

EasyExcel 默认采用流式解析,适合处理 GB 级别的 Excel 文件,推荐在数据量超过 10 万行时使用。

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

相关文章

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

java如何实现异步

java如何实现异步

Java实现异步的方法 Java中实现异步编程可以通过多种方式,每种方式适用于不同的场景和需求。以下是常见的实现方法: 使用Thread类 创建新线程执行异步任务是最基础的方式。通过继承Thread…

java中如何获取当前时间

java中如何获取当前时间

获取当前时间的几种方法 使用 java.time 包(Java 8及以上推荐) import java.time.LocalDateTime; LocalDateTime currentTime =…

php 实现 java md5加密

php 实现 java md5加密

PHP 实现 Java MD5 加密 Java 和 PHP 的 MD5 加密结果可能存在差异,主要由于字符编码和输出格式的不同。以下是确保 PHP 与 Java MD5 加密结果一致的方法。 确保字…

如何精通java

如何精通java

理解Java核心概念 Java的基础知识包括数据类型、变量、运算符、控制流语句(如循环和条件判断)、数组以及面向对象编程(OOP)的核心概念(类、对象、继承、多态、封装)。熟练掌握这些内容是后续学习的…

java如何取绝对值

java如何取绝对值

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