如果特定列中的单元格为空,如何使用python openpyxl删除Excel中的行?

如果特定列中的单元格为空,如何使用python openpyxl删除Excel中的行?,python,excel,openpyxl,Python,Excel,Openpyxl,我是Python初学者(也是堆栈溢出新手),最近我发现openpyxl是一个救星,但我无法解决以下问题 我有一个a-I列数据的电子表格。电子表格是一份课程完成报告,告诉我客户是否完成了我公司提供的特定课程。如果客户已完成课程,则在“I”栏中以“mm/dd/yyyy”格式列出完成日期。如果客户尚未完成课程,“I”列中的单元格为空。我想删除列“I”中的值为空的所有行。我尝试了以下方法: for cell in ws['I'][1:]: if cell.value is None:

我是Python初学者(也是堆栈溢出新手),最近我发现openpyxl是一个救星,但我无法解决以下问题

我有一个a-I列数据的电子表格。电子表格是一份课程完成报告,告诉我客户是否完成了我公司提供的特定课程。如果客户已完成课程,则在“I”栏中以“mm/dd/yyyy”格式列出完成日期。如果客户尚未完成课程,“I”列中的单元格为空。我想删除列“I”中的值为空的所有行。我尝试了以下方法:

for cell in ws['I'][1:]:
    if cell.value is None:
        ws.delete_rows()
这没有抛出任何错误消息,但也不起作用。我还尝试:

for cell in ws['I'][1:]:
    if cell.value == None:
        ws.delete_rows()

再说一次,我是一个初学者,所以我可能错过了一些非常简单的东西。非常感谢您的任何帮助!谢谢。

您似乎只需要指定要删除的行:

for cell in ws['I'][1:]:
    print(cell.value)
    if cell.value == None:
        ws.delete_rows(cell.row)
    
您还必须保存更改:

wb.save('yourfile.xlsx')

如此简单;然而,如此重要!非常感谢你指出这一点。这几乎完美地发挥了作用。我还发现,我实际上需要的不是“if cell.value==None”,而是“if cell.value==”,它工作得非常好。在大约5000行上循环大约需要6分钟。有比for循环更快的选项吗?再次感谢你!很高兴它现在起作用了。使用熊猫可能会更快。使用df=pd.read\u excel(yourfile.xls)导入;然后删除列I为空的行,然后使用df.to_excel(yournewfile.xls)保存。