You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用openpyxl读取Excel如何实现行号自动递增,无需手动写row+=1

openpyxl 自动行号递增读取方案

下面提供两种可直接落地的实现方式:

方案1:生成器实现(轻量首选)

通过生成器自动记录当前读取行位置,每次调用next()即可拿到下一行指定列的值,无需手动维护行号变量。

完整示例代码

import openpyxl

# 通用列读取生成器
def iter_column(sheet, start_row: int = 1, target_col: int = 1):
    current_row = start_row
    while True:
        # 超出表格最大行时自动停止迭代
        if current_row > sheet.max_row:
            return
        yield sheet.cell(row=current_row, column=target_col).value
        current_row += 1

# 业务代码
path = "..//excel//testdata.xlsx"
sheetName = "sheet1"
workbook = openpyxl.load_workbook(path)
sheet = workbook[sheetName]

# 初始化生成器,指定起始行和目标列
col_reader = iter_column(sheet, start_row=1, target_col=1)

# 直接取值即可,无需手动管理row+=1
x = next(col_reader)
y = next(col_reader)
z = next(col_reader)

print("value of x : " ,x)
print("value of y : " ,y)
print("value of z : " ,z)

额外优化点

如果需要一次性读取连续N行的值,可直接用解包语法简化代码:

# 一次性读取前3行的值
x, y, z = [next(col_reader) for _ in range(3)]

方案2:封装类实现(灵活适配多场景)

如果需要支持不同列的读取、自定义行号跳转等更复杂的需求,可以封装为工具类:

工具类代码

class AutoIncRowReader:
    def __init__(self, sheet, start_row: int = 1, default_col: int = 1):
        self.sheet = sheet
        self.current_row = start_row
        self.default_col = default_col
    
    def get_next(self, col: int = None):
        """读取下一行指定列的值,默认使用初始化时指定的列"""
        use_col = col if col is not None else self.default_col
        cell_val = self.sheet.cell(row=self.current_row, column=use_col).value
        self.current_row += 1
        return cell_val
    
    def skip_rows(self, count: int = 1):
        """跳过指定行数"""
        self.current_row += count

使用示例

# 初始化读取器
reader = AutoIncRowReader(sheet, start_row=1, default_col=1)
x = reader.get_next()
y = reader.get_next()
# 可以临时指定读取其他列,同样会自动递增行号
other_col_val = reader.get_next(col=2)
# 跳过2行
reader.skip_rows(2)
z = reader.get_next()

内容的提问来源于stack exchange,提问作者Karthik Manjrekar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 13:36:00