当前位置:首页 > Java

java如何读取xlsx文件

2026-03-04 09:30:35Java

使用 Apache POI 库读取 XLSX 文件

Apache POI 是 Java 中处理 Office 文档的流行库,支持 XLSX 格式。以下是读取 XLSX 文件的基本方法:

确保在项目中添加 Apache POI 依赖(Maven 配置):

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <artifactId>5.2.3</artifactId>
</dependency>

读取 XLSX 文件的代码示例:

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

public class XLSXReader {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("example.xlsx");
             Workbook workbook = new XSSFWorkbook(fis)) {

            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();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用 EasyExcel 库高效读取大文件

对于大型 XLSX 文件,EasyExcel 提供了内存友好的解决方案:

添加 EasyExcel 依赖(Maven 配置):

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

使用监听器模式读取的示例:

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.ReadListener;

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

        EasyExcel.read(fileName, DemoData.class, new ReadListener<DemoData>() {
            @Override
            public void invoke(DemoData data, AnalysisContext context) {
                System.out.println("Processing: " + data);
            }

            @Override
            public void doAfterAllAnalysed(AnalysisContext context) {
                System.out.println("All data processed");
            }
        }).sheet().doRead();
    }

    public static class DemoData {
        private String column1;
        private Integer column2;
        // 添加 getter/setter 和 toString
    }
}

处理日期和特殊格式

当 XLSX 中包含日期或自定义格式时,需要特殊处理:

// 在 Apache POI 中处理日期
if (cell.getCellType() == CellType.NUMERIC && DateUtil.isCellDateFormatted(cell)) {
    System.out.print(cell.getDateCellValue() + "\t");
}

// 在 EasyExcel 中通过注解处理
public class DemoData {
    @ExcelProperty("日期列")
    @DateTimeFormat("yyyy-MM-dd")
    private Date dateColumn;
}

性能优化建议

对于大数据量文件,采用流式读取方式减少内存消耗。Apache POI 提供了 SXSSFWorkbook:

Workbook workbook = new SXSSFWorkbook(new XSSFWorkbook(fis));

EasyExcel 本身采用流式解析,默认情况下内存占用较低,适合处理百万级数据。可以通过调整参数进一步优化:

EasyExcel.read(fileName)
    .headRowNumber(2)  // 跳过表头
    .readCache(100)    // 设置缓存行数
    .sheet()
    .doRead();

java如何读取xlsx文件

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

相关文章

如何查看java版本

如何查看java版本

查看 Java 版本的方法 通过命令行工具 打开终端(Windows 为命令提示符或 PowerShell,macOS/Linux 为 Terminal),输入以下命令并回车: java -v…

如何配置java

如何配置java

安装Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK项目页面下载适合操作系统的JDK安装包。选择与系统架构匹配的版本(如Windows x64、macOS ARM等)。运行安装程…

jquery文件

jquery文件

jQuery文件获取与使用 jQuery是一个快速、简洁的JavaScript库,简化了HTML文档遍历、事件处理、动画和Ajax交互。以下是获取和使用jQuery文件的方法。 下载jQuery文件…

java如何学习

java如何学习

学习Java的有效方法 理解基础概念 Java是一门面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制语句(if-else、循环)是必要的。面向对象的核心概念包括类、对象、继承、多态和封装…

java如何自学

java如何自学

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

java如何输入数据

java如何输入数据

输入数据的方法 在Java中,输入数据可以通过多种方式实现,具体取决于输入来源(如控制台、文件、网络等)。以下是几种常见的方法: 使用Scanner类从控制台输入 Scanner类是Java中最常…