利用poi获取导入的Excel表格一共有多少行数据!!!

文章介绍了在Java中利用ApachePOI库解析Excel文件时,获取表格行数的四种不同方法,包括getLastRowNum(),getPhysicalNumberOfRows(),遍历行检查空值以及使用rowIterator()。这些方法分别适用于不同场景,如计算有数据的行数或总行数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近有一个需求获取导入excel表格里的数据,我需要知道一共有多少行数据,总结了一下四种api获取行数。
1、使用sheet.getLastRowNum()方法来获取最后一行的行号,并将其加1即为Excel表格的总行数。

import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

import java.io.FileInputStream;
import java.io.InputStream;

public class ExcelRowCount {
    public static void main(String[] args) throws Exception {
        InputStream inp = new FileInputStream("test.xlsx");
        Workbook wb = WorkbookFactory.create(inp);
        Sheet sheet = wb.getSheetAt(0);
        int rowCount = sheet.getLastRowNum() + 1;
        System.out.println("Excel表格的行数是:" + rowCount);
    }
}

2、sheet.getPhysicalNumberOfRows()方法返回的是Excel中实际存在的行数,包括有数据的行和空白的行。

int rowCount = sheet.getPhysicalNumberOfRows();

3、通过循环遍历每一行,并判断该行是否为空,如果该行不为空,则将行数加1。

int rowCount = 0;
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
    if (sheet.getRow(i) != null) {
        rowCount++;
    }
}

4、使用了迭代器的方式,判断是否存在下一行,如果存在,则将最后一行的行号加1,即为实际存在的行数。如果不存在,则说明Excel中没有数据,实际行数为0。

int rowCount = sheet.rowIterator().hasNext() ? sheet.getLastRowNum() + 1 : 0;

你还知道哪些方法获取行数吗。。。。。

### 使用POI导出XLSX并修改第一行部分字符 当使用Apache POI库来操作Excel文件时,可以通过`XSSFWorkbook`类处理`.xlsx`格式的文件。为了实现对第一行特定位置单元格内字符的替换,可以按照如下方法: #### 创建或打开现有的XLSX文件 如果目标是从头创建一个新的XLSX文件,则实例化`XSSFWorkbook`对象;如果是编辑已有的文件,则需先读取该文件。 ```java // 新建一个XSSFWorkbook对象用于创建新的.xlsx文件 XSSFWorkbook workbook = new XSSFWorkbook(); ``` #### 获取指定的工作表 利用`createSheet()`函创建新工作表或将现有工作簿中的第一个工作表赋给变量以便后续操作。 ```java // 假设我们要在名为"Sheet1"的新表格中进行操作 XSSFSheet sheet = workbook.createSheet("Sheet1"); ``` #### 定位到首行并获取其内容 对于想要更改的内容位于第一行的情况,应该定位至第0索引对应的行(即第一行),并通过迭代器访问其中每一个单元格。 ```java // 如果存在据则获取第一行(索引为0),不存在就新建一行作为第一行 Row firstRow; if (sheet.getPhysicalNumberOfRows() > 0) { firstRow = sheet.getRow(0); } else { firstRow = sheet.createRow(0); // 若无任何记录,则新增加一行 } ``` #### 修改具体单元格内的字符串值 遍历所选行里的各个单元格,并针对需要调整的地方执行更新动作。这里假设只改变A列(A1)处的文字信息为例说明。 ```java Cell cellToModify; cellToModify = firstRow.getCell(0); // A列为index=0 的单元格 if(cellToModify == null){ cellToModify = firstRow.createCell(0); } String originalValue = "原始文本"; String newValue = "替换成的目标文本"; if(originalValue.equals(cellToModify.getStringCellValue())){ cellToModify.setCellValue(newValue); } ``` 上述代码片段展示了如何检测是否存在待改写的单元格以及设置新的字符串值的过程[^2]。 最后不要忘记保存所做的全部改动到磁盘上的实际文件里去: ```java FileOutputStream fileOut = new FileOutputStream("workbook.xlsx"); workbook.write(fileOut); fileOut.close(); workbook.close(); // 关闭资源释放内存空间 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FirstTalent

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值