循环跳过单元格的未合并单元格

2024-09-19 22:27:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用openpyxl,通过搜索xlsx工作簿中未融合的单元格找到了一些代码。在

我让代码工作,但发现它并没有在一次传递中删除所有合并的单元格。我将它设置为使用while循环运行,并解决了这个问题,但我想知道我做错了什么导致了一开始的跳过。任何见解都会有帮助。在

代码:

 import openpyxl 
 wb = './filename.xlsx'

 ws = wb[sheetname] 

def remove_merged(sheet_object):
     merged = ws.merged_cell_ranges
     while len(merged)>0:
         for mergedRNG in merged:
             ws.unmerge_cells(range_string = mergedRNG)
         merged = ws.merged_cell_ranges
     return len(merged)

remove_merged(ws)

Tags: 代码importlenwscellmergedfilenamexlsx
1条回答
网友
1楼 · 发布于 2024-09-19 22:27:25

ws.merged_cell_ranges是可变的,因此您需要注意不要在任何for循环中直接使用它,因为隐式计数器不会考虑属性已被重新计算。这是Python中常见的一个问题,示例如下:

l = list(range(10))
for i in l:
    print(i)
    l.pop(0) # anything that affects the structure of the list

以下是如何避免这种情况:

^{pr2}$

只是从网络搜索中复制内容并不明智。有几个网站的代码过时或不必要的复杂。最好参考文档或在邮件列表中询问。在

相关问题 更多 >