好吧,我就是这样做的。尽管作者查理克拉克建议使用
reversed
,我仍然没有确定使用该方法的语法。
print('BEGIN: sheet.max_row: ' + str(sheet.max_row))
for rr in range(sheet.max_row, 1, -1):
hasData = False
for cc in range(1, sheet.max_column+1):
tmp = AlphaFromIndex(cc)
ref = str(tmp) + str(rr)
val = sheet[ref].value
if val is not None: hasData = True
if not hasData:
print('Row: ' + str(rr) + ' -- Deleting row: ' + str(rr))
sheet.delete_rows(rr, 1)
else:
print('Row: ' + str(rr) + ' of (' +str(sheet.max_row)+')')
print('END: sheet.max_row: ' + str(sheet.max_row))
def AlphaFromIndex(num):
ab = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
return ab[num - 1]
*但是*
本练习的主要收获是OpenPyXL不会更新任何已删除行下的行中的公式。所以,在OpenPyXL中删除空白行是个坏主意