博客
关于我
POI解析Excel【poi的坑——空行处理】
阅读量:802 次
发布时间:2023-03-03

本文共 1342 字,大约阅读时间需要 4 分钟。

如何正确遍历Excel文件中的数据

在实际项目中,处理Excel文件中的数据时,如何正确遍历各行、各列的单元格数据是一个常见的问题。本文将详细介绍三种常见的遍历方式,并分析其优缺点。

第一种方式:使用Row对象的getRow(int index)方法

这种方法通过遍历所有行来获取每一行的数据。以下是实现代码的简化版本:

Workbook book = new HSSFWorkbook(inputStream);Sheet sheet = book.getSheetAt(0);int rowCnt = sheet.getRowCount();for (int i = 0; i < rowCnt; i++) {    Row row = sheet.getRow(i);    if (row != null) {        // 处理行数据        // ...    }}

优点:直接基于行索引遍历,逻辑简单清晰。

缺点:如果Excel文件中存在空行,getRow(i)会返回null,导致无法处理这些行。这种方法无法保证遍历所有行。


第二种方式:使用RowIterator遍历行

这种方式通过行迭代器来逐行处理。代码示例如下:

Workbook book = new HSSFWorkbook(inputStream);Sheet sheet = book.getSheetAt(0);RowIterator rowItr = sheet.rowIterator();while (rowItr.hasNext()) {    Row row = rowItr.next();    // 处理行数据    // ...}

优点:能够处理空行,因为迭代器会自动跳过空行。

缺点:如果某一行存在空单元格,cellIterator()方法会跳过这些单元格,导致无法获取到空单元格的值。这种方式无法处理空单元格。


第三种方式:使用getLastRowNum()遍历所有行

这种方式通过获取表格的最后一行的行数,逐个遍历所有行。代码示例如下:

Workbook book = new HSSFWorkbook(inputStream);Sheet sheet = book.getSheetAt(0);int lastRowNum = sheet.getLastRowNum();for (int i = 0; i < lastRowNum; i++) {    Row row = sheet.getRow(i);    if (row != null) {        // 处理行数据        // ...    }}

优点:能够保证遍历所有行,包括空行。

缺点:如果表格中存在空单元格,这种方法仍然会将空单元格的值添加到结果中。为了处理空单元格,可以在获取单元格值时进行额外判断。


总结

以上三种遍历方式各有优缺点,选择哪一种方式取决于具体需求。对于普通的数据解析任务,第三种方式(使用getLastRowNum())是一个比较可靠的选择,因为它能够保证遍历所有行和单元格。然而,如果对性能要求较高,或者需要处理空单元格,可以根据实际需求选择最适合的方式。

转载地址:http://dkxfk.baihongyu.com/

你可能感兴趣的文章
PS辅助工具Assistor PS
查看>>
pt-archiver 归档历史数据及参数详解
查看>>
pt-online-schema-change使用详解
查看>>
PyTorch 模型性能分析和优化 — 第 2 部分
查看>>
PTA L1-011 A-B
查看>>
pta l2-1紧急救援(Dijkstra)
查看>>
pta求阶乘序列前n项和_学霸整理——求数列的通项公式解法集锦,转化、归纳一文全懂...
查看>>
SpringBoot中集成Redis实现对redis中数据的解析和存储
查看>>
pthread_create导致的程序崩溃
查看>>
ptyhon POSIX
查看>>
public private protected default小结
查看>>
PublicCMS怎么用金蝶Apusic Application Server部署
查看>>
publish over ssh、 Kubernetes Continuous Deploy插件
查看>>
PubMed详解-ChatGPT4o作答
查看>>
Pubsub Extensions for Smack
查看>>
pulsar mq 单体验证demo, docker启动pulsar mq验证生产者消费者命令
查看>>
pulsar mq 学习使用,pulsar java客户端, spring boot pulsar , spring pulsarTemplate如何使用 pulsar4.0.0
查看>>
Pulsar mq 设置延迟消息模式 pulsar mq 发送延迟消息 pulsar如何发送消费延时消息
查看>>
Pulsar 游标回滚,移动偏移量测试
查看>>
pulsar开源消息队列_了解Pulsar---Pulsar工作笔记001
查看>>