使用Java读取Excel文件内容的三种方法

 更新时间:2025年12月09日 10:12:47   作者:大丸子  
在日常开发中,我们常常需要读取Excel文件中的数据进行进一步处理,无论是批量导入数据、统计分析,还是自动化表格处理,Java都可以提供高效、稳定的读取方式,本文将介绍如何使用 Spire.XLS for Java 读取Excel文件中的内容,需要的朋友可以参考下

在日常开发中,我们常常需要读取Excel文件中的数据进行进一步处理。无论是批量导入数据、统计分析,还是自动化表格处理,Java都可以提供高效、稳定的读取方式。

本文将介绍如何使用 Spire.XLS for Java 读取Excel文件中的内容,涵盖从文件或流中加载、按单元格读取文本和数值、识别单元格类型以及提取公式等多种实用技巧。示例代码简单明了,适合初学者上手,也可作为构建复杂Excel处理功能的基础。

  • 方法1:从Excel文件中逐行读取所有内容
  • 方法2:通过InputStream读取Excel文件
  • 方法3:读取单元格的不同数据类型

Maven:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.xls.free</artifactId>
    <version>5.3.0</version>
</dependency>

方法1:从Excel文件中逐行读取所有内容

如果我们需要读取整个表格的数据,可以通过遍历工作表中所有已用单元格来获取值。

示例代码

import com.spire.xls.*;

public class ReadExcel {
    public static void main(String[] args) {
        // 创建Workbook对象并加载Excel文件
        Workbook workbook = new Workbook();
        workbook.loadFromFile("data.xlsx"); // 或 "data.xls"

        // 获取第一个工作表
        Worksheet sheet = workbook.getWorksheets().get(0);

        // 遍历每一行每一列,读取单元格内容
        for (int i = 1; i <= sheet.getLastRow(); i++) {
            for (int j = 1; j <= sheet.getLastColumn(); j++) {
                String cellText = sheet.getCellRange(i, j).getValue();
                System.out.print(cellText + "\t");
            }
            System.out.println();
        }
    }
}

说明:

  • getCellRange(i, j).getValue() 用于获取单元格的原始字符串值。
  • 行列索引从1开始,与Excel中一致。

读取结果:

方法2:通过InputStream读取Excel文件

当Excel文件来自网络、数据库或其他流形式时,我们可以通过 InputStream 加载它,无需将文件先保存在磁盘。

示例代码

import com.spire.xls.*;
import java.io.*;

public class ReadExcelFromStream {
    public static void main(String[] args) throws FileNotFoundException {
        // 创建输入流对象
        InputStream stream = new FileInputStream("data.xlsx");

        // 加载Excel文件
        Workbook workbook = new Workbook();
        workbook.loadFromStream(stream);

        System.out.println("Load Excel file successfully.");
    }
}

说明:

  • 适用于文件上传或Web服务场景。
  • 支持 .xls 和 .xlsx 格式。

方法3:读取单元格的不同数据类型

除了文本,Excel单元格中还可能包含数字、布尔值、日期、公式等。下面示例展示如何获取各种数据类型及公式信息。

示例代码

import com.spire.xls.*;
import java.util.Date;

public class ReadCellTypes {
    public static void main(String[] args) {
        Workbook workbook = new Workbook();
        workbook.loadFromFile("data.xlsx");

        Worksheet sheet = workbook.getWorksheets().get(0);
        CellRange cell = sheet.getRange().get(2, 1); // B2

        String text = cell.getText(); // 显示文本
        String value = cell.getValue(); // 原始字符串
        Object value2 = cell.getValue2(); // 通用对象

        String formula = cell.getFormula(); // 公式内容
        String result = cell.getEnvalutedValue(); // 公式计算结果

        double number = cell.getNumberValue(); // 数值
        Date date = cell.getDateTimeValue(); // 日期
        boolean bool = cell.getBooleanValue(); // 布尔值

        System.out.println("Text: " + text);
        System.out.println("Raw Value: " + value);
        System.out.println("Formula: " + formula);
        System.out.println("Evaluated Result: " + result);
        System.out.println("Number: " + number);
        System.out.println("Date: " + date);
        System.out.println("Boolean: " + bool);
    }
}

说明:

  • .getFormula() 可提取单元格中的公式表达式。
  • .getEnvalutedValue() 返回公式的计算结果。
  • 不同类型的方法适用于不同格式的单元格。

总结

本文介绍了三种在Java中读取Excel文件的方法,涵盖了从本地文件与流中加载、按行读取数据、以及单元格类型识别等多个实用场景。通过这些技巧,我们可以轻松实现对Excel文件内容的灵活读取与后续处理。

以上就是使用Java读取Excel文件内容的三种方法的详细内容,更多关于Java读取Excel文件内容的资料请关注脚本之家其它相关文章!

相关文章

  • 举例讲解Java的RTTI运行时类型识别机制

    举例讲解Java的RTTI运行时类型识别机制

    这篇文章主要介绍了Java的RTTI运行时类型识别机制,包括泛化的Class引用以及类型检查instanceof等知识点,需要的朋友可以参考下
    2016-05-05
  • Java JDBC API介绍与实现数据库连接池流程

    Java JDBC API介绍与实现数据库连接池流程

    JDBC是指Java数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库。从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库,本篇文章我们来了解JDBC API及数据库连接池
    2022-12-12
  • Java中关于size()>0 和isEmpt()的性能考量

    Java中关于size()>0 和isEmpt()的性能考量

    这篇文章主要介绍了Java中关于size()>0 和isEmpt()性能考量,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Spring中bean的初始化和销毁几种实现方式详解

    Spring中bean的初始化和销毁几种实现方式详解

    这篇文章主要介绍了Spring中bean的初始化和销毁几种实现方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • IntelliJ IDEA之配置JDK的4种方式(小结)

    IntelliJ IDEA之配置JDK的4种方式(小结)

    这篇文章主要介绍了IntelliJ IDEA之配置JDK的4种方式(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • SpringBatch跳过异常和限制方式

    SpringBatch跳过异常和限制方式

    这篇文章主要介绍了SpringBatch跳过异常和限制方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Spring Aop 源码增强获取分享

    Spring Aop 源码增强获取分享

    这篇文章主要介绍了Spring Aop 源码增强获取分享,文章围绕主题的内容展开Spring Aop的相关介绍,具有一定的参考价值需要的小伙伴可以参考一下
    2022-05-05
  • Java中equals和==的区别小结

    Java中equals和==的区别小结

    == 和 equals() 都用于比较两个对象,本文主要介绍了Java中equals和==的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2025-06-06
  • Java利用ElasticSearch实现自动补全功能

    Java利用ElasticSearch实现自动补全功能

    这篇文章主要为大家详细介绍了Java如何利用ElasticSearch实现跟谷歌和百度类似的下拉补全提示功能,文中的示例代码讲解详细,需要的可以参考一下
    2023-08-08
  • JAVA注解相关知识总结

    JAVA注解相关知识总结

    这篇文章主要介绍了JAVA注解相关知识,文中讲解非常详细,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06

最新评论