org.apache.poi.ss.usermodel.Sheet.getLastRowNum() 始终返回 1048575

问题描述 投票:0回答:1

我尝试使用 apache poi 获取 Excel 文件中的最后一行索引,但 getLastRowNum() 总是返回错误的行数,并且该数字始终为 1048575 。

我的xlsx很简单。它只有三行内容。

以下是相关代码片段:

Sheet sheet = workbook.getSheetAt(0);
            int rowNum = sheet.getLastRowNum();
            log.info("LastRowNum " + rowNum);

Apache POI 版本:

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>5.2.2</version>
        </dependency>       

操作系统:“Arch Linux”

JAVA版本:

openjdk version "17.0.5" 2022-10-18
OpenJDK Runtime Environment Temurin-17.0.5+8 (build 17.0.5+8)
OpenJDK 64-Bit Server VM Temurin-17.0.5+8 (build 17.0.5+8, mixed mode, sharing)

我尝试升级 apache poi 但这并不能解决问题。

apache-poi
1个回答
0
投票

我也有同样的问题,不是 Apache POI 造成的,而是 LibreOffice 编辑造成的!当您使用 LibreOffice 删除一行时,最后一行索引将设置为可用最大行数 (1048575)。

如果您使用Excel,则不会有问题...

目前我还没有解决方案...

就我而言,当 getLastRowNum() 返回 1048575 时,我排除了对行数的检查...(我想该文件正在使用 LibreOffice 进行编辑,并且我的检查是不可能的!)。

© www.soinside.com 2019 - 2024. All rights reserved.