使用Java读取Excel文件数据

通过编程方式读取Excel数据能实现数据导入、批量处理、数据比对和更新等任务的自动化。这不仅可以提高工作效率还能减少手动处理的错误风险。此外读取的Excel数据可以与其他系统进行交互或集成,实现数据的无缝传输和共享,满足特定项目的需求。本文将从以下三个方面介绍如何通过Java读取Excel文件中的数据。

  • 读取某个单元格中的数据
  • 读取指定单元格范围的数据
  • 读取Excel工作表中的数据

安装免费Java库

操作Excel的免费Java库为 Free Spire.XLS for Java。该免费库在读写 .xls 格式的 Excel 文档时,有每个文档 5 个工作表,每个工作表 200 行的限制。但在读写 .xlsx 格式的 Excel 文档时是没有任何限制。

我么可以从下面链接下载产品包后手动引入jar包或者直接通过Maven仓库安装也可。

https://www.e-iceblue.cn/Downloads/Free-Spire-XLS-JAVA.html

读取Excel数据的核心方法:

要读取Excel单元格、单元格范围、或者Excel工作表中的数据,我们需要用到Free Spire.XLS for Java库提供的以下接口:

  • Workbook 类、Worksheet类:分别用于代表 Excel 工作簿、和工作簿中的工作表。
  • CellRange类:用于代表某个特定的单元格或单元格区域。
  • Worksheet.getCellRange(String name) 方法:获取某个单元格或单元格区域并返回 CellRange 对象。
  • Worksheet.getAllocatedRange() 方法:获取工作表中包含数据的单元格区域,并返回 CellRange 对象。
  • CellRange.getValue() 方法:获取单元格中的数值或文本值。(如果单元格有公式,该方法会返回公式而不是公式计算的结果)

输入文档:

Java代码示例

示例1 :使用Java 读取某个单元格的数据

复制代码
import com.spire.xls.CellRange;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
 
public class ReadData {
 
    public static void main(String[] args) {
 
        //创建Workbook对象
        Workbook wb = new Workbook();
 
        //加载Excel文件
        wb.loadFromFile("货物.xlsx");
 
        //获取第一张工作表
        Worksheet sheet = wb.getWorksheets().get(0);
 
        //获取指定单元格
        CellRange cell = sheet.getCellRange("A9");
 
        //获取单元格数据
        System.out.print("A9单元格的值为 " + cell.getValue());
    }
}

读取A9单元格的值:

示例2:使用Java 读取某个单元格范围中的数据

复制代码
import com.spire.xls.CellRange;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
 
public class ReadData {
 
    public static void main(String[] args) {
 
        //创建Workbook对象
        Workbook wb = new Workbook();
 
        //加载Excel文件
        wb.loadFromFile("货物.xlsx");
 
        //获取第一张工作表
        Worksheet sheet = wb.getWorksheets().get(0);
 
        //获取指定单元格区域
        CellRange range = sheet.getCellRange("A11:F15");
 
        //遍历行和列
        for (int i = 0; i < range.getRows().length; i++) {
            
            for (int j = 0; j < range.getColumnCount(); j++) {
 
                //获取单元格数据
                System.out.print(range.get(i + 11, j + 1).getValue() + "  ");
            }
            System.out.println();
        }
    }
}

读取Excel单元格范围返回结果:

读取Excel工作表中的数据

复制代码
import com.spire.xls.CellRange;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
 
public class ReadData {
 
    public static void main(String[] args) {
 
        //创建Workbook对象
        Workbook wb = new Workbook();
 
        //加载Excel文件
        wb.loadFromFile("货物.xlsx");
 
        //获取第一张工作表
        Worksheet sheet = wb.getWorksheets().get(0);
 
        //获取工作表中的数据区域
        CellRange locatedRange = sheet.getAllocatedRange();
 
        //遍历行和列
        for (int i = 0; i < locatedRange.getRows().length; i++) {
 
            for (int j = 0; j < locatedRange.getColumnCount(); j++) {
 
                //获取单元格中的数据
                System.out.print(locatedRange.get(i + 1, j + 1).getValue() + "  ");
            }
            System.out.println();
        }
    }
}

读取Excel工作表数据返回结果:


通过以上示例, 我们可以通过Java编程语言来读取Excel文件,实现Excel数据的批量处理。Free Spire.XLS for Java 这个免费库还支持生成、转换、编辑、打印Excel文件等各种功能,有兴趣可前往其中文教程进行了解。

相关推荐
我叫汪枫5 小时前
《Java餐厅的待客之道:BIO, NIO, AIO三种服务模式的进化》
java·开发语言·nio
yaoxtao5 小时前
java.nio.file.InvalidPathException异常
java·linux·ubuntu
Swift社区6 小时前
从 JDK 1.8 切换到 JDK 21 时遇到 NoProviderFoundException 该如何解决?
java·开发语言
DKPT7 小时前
JVM中如何调优新生代和老生代?
java·jvm·笔记·学习·spring
phltxy7 小时前
JVM——Java虚拟机学习
java·jvm·学习
seabirdssss9 小时前
使用Spring Boot DevTools快速重启功能
java·spring boot·后端
喂完待续9 小时前
【序列晋升】29 Spring Cloud Task 微服务架构下的轻量级任务调度框架
java·spring·spring cloud·云原生·架构·big data·序列晋升
benben0449 小时前
ReAct模式解读
java·ai
轮到我狗叫了10 小时前
牛客.小红的子串牛客.kotori和抽卡牛客.循环汉诺塔牛客.ruby和薯条
java·开发语言·算法