openpyxl删除除列行excel以外的所有值

问题描述

我有一个专业技能:

   A      B        C             D
1  long  short  suggested_long  suggested_short
2  -2.11  5.11   #N/A           
3  -4.11  3.66   #REF!           #N/A
4  93.44  7.55   0               0
5  1256.4 966.5  563.5           #REF!

因此,在cell(A1)中是long,在cell(B2)中是5.11; 我想清除suggested_long和suggested_short中的所有值,但需要保留列名行,因为我需要在清除所有值后插入数据。那么结果应该是:

   A      B        C             D
1  long  short    
2  -2.11  5.11              
3  -4.11  3.66             
4  93.44  7.55               
5  1256.4 966.5             

我知道openpyxl可以做到:

for row in ws['C1:D5']:
  for cell in row:
    cell.value = None

删除单元格中的值,但是我在“ suggest_long”和“ suggested_short”中不确定单元格的数量。我认为其他人可能也有同样的问题,所以我在这里张贴,非常感谢

解决方法

尝试一下:

for row in ws['C2:D'+str(len(ws['D']))]:
  for cell in row:
    cell.value = None
,

当然,最简单的事情就是删除列并替换标题:

ws.delete_cols(3,2)
ws["C1"] = "suggested_long"
ws["D1"] = "suggested_short"

否则请使用ws.iter_rows(min_row=2,min_col=3)