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

时间:2016-07-08 16:45:02

标签: python excel openpyxl

我正在使用openpyxl并通过goolging关于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)

1 个答案:

答案 0 :(得分:2)

$window.scroll(function() { $('#global-wrapper-cp-142f9c37e921e052ae02cddde9be836b').toggleClass('fixed', $(window).scrollTop() > num); }); 是可变的,因此您需要注意不要在任何for循环中直接使用它,因为隐式计数器不会考虑该属性已被重新计算。这是Python中常见的问题所示:

ws.merged_cell_ranges

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

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

PS。只是从互联网搜索中复制内容并不是真的可取。有几个站点有过时或不必要的复杂代码。最好参考文档或在邮件列表上询问。