You need to enable JavaScript to run this app. 在循环内插入新行时如何遍历电子表格的所有行
优惠活动
大模型
产品
解决方案
定价
更多

在循环内插入新行时如何遍历电子表格的所有行

电子表格遍历过程中动态插入行的问题与解决方案

问题描述

我想询问当我们在遍历循环内部新增行时,要如何遍历电子表格中的所有行。

举个例子,我的电子表格里有100行数据,我通过如下代码遍历这些行:

for row in self.worksheet.iter_rows(min_row=2, 
max_col=self.worksheet.max_column, max_row=self.worksheet.max_row):
    for cell in row:
    ...

在内层循环中,我会在满足特定条件时插入新行。
这就导致如果我在遍历过程中插入了10条新行,表格总共有110行,但循环只会遍历最初的100行,新增的行不会被纳入遍历范围。
我希望这些新增的行也能被纳入遍历流程,应该怎么实现?

已验证解决方案

我的需求是向排序后的数据插入新行,用来分隔不同的排序数据子组。
之前的问题核心是:在循环中插入新行时,表格的总行数会动态变化,但循环的遍历范围是固定的初始行数,导致最后几个数据子组没有被新行分隔开。

我的解决思路是:先在首次遍历中把所有需要插入行的行号存入一个列表,之后再单独遍历这个插入位置列表,插入过程中动态调整后续的插入位置行号即可。
实现代码如下:

dynamic_row_id = 0
flag_first = True
for row_num in row_numbers_to_insert_list:
    if flag_first:
        self.worksheet.insert_rows(row_num)
        flag_first = False
    else:
        dynamic_row_id += 1
        row_num += dynamic_row_id
        self.worksheet.insert_rows(row_num)

举个实际场景验证:如果待插入行的行号列表是[5,6,7,8,9],每插入一行就给后续的待插入行号加1,最终实际插入的位置就是5、6+1=7、7+2=9、8+3=11、9+4=13,完全符合需求。

以上就是该问题的完整解决方案,可供有相同需求的开发者参考。

内容的提问来源于stack exchange,提问作者Mateusz H.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 02:45:04