如何使用 python pywin32 删除 excel 中的行

how to delete row in excel with python pywin32

亲爱的大家。

如果单元格 (i,5) 没有值,我想用 python pywin32 at python 3.6 删除 excel 中的行。

这是我的代码。

def qms(self):
    fname = QtWidgets.QFileDialog.getOpenFileName(self)

    if fname[0]:
        self.Filename.setText(fname[0])
        excel = win32com.client.Dispatch("Excel.Application")
        excel.Visible = True
        f = excel.Workbooks.Open(fname[0])
        fs = f.ActiveSheet
        lastrow = fs.UsedRange.Rows.Count

        for i in range(3, lastrow):
            if not fs.Cells(i,5).Value :
               fs.getCells().deleteRows(i-1,1,True)

        excel.Workbooks.save()
        excel.Quit()

我认为 fs.getCells().deleteRow(i-1,1,True) 有问题。 我无法理解。你能帮帮我吗?

for i in range(lastrow, 2, -1):
    if fs.Cells(i,5).Value != ""
        fs.Rows(i).EntireRow.Delete()

或者您可以一次全部删除:

fs.UsedRange.Offset(2).Columns(5).SpecialCells(4).EntireRow.Delete()

https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-specialcells-method-excel

def qms(self):
    fname = QtWidgets.QFileDialog.getOpenFileName(self)

    if fname[0]:
        self.Filename.setText(fname[0])
        excel = win32com.client.Dispatch("Excel.Application")
        excel.Visible = True
        f = excel.Workbooks.Open(fname[0])
        fs = f.ActiveSheet
        lastrow = fs.UsedRange.Rows.Count

        for i in range(lastrow, 2, -1):
            if fs.Cells(i,5).Value == None or fs.Cells(i,5).Value == "":
                fs.Rows(i).EntireRow.Delete()