请大神指点,小白跪谢

import xlwings as xw
import time
from time import sleep
import os
app=xw.App(visible=True,add_book=False)
wb = app.books.open (r'E:/䐁蕳/营销渠道保单清单.xlsx')
time.sleep(10)
sht = wb.sheets['sheet1']
exist_list =["正常有效","标体通过","承保","人工核保","新增险种","自核通过"]
为什么我这段保留的字,只有第一个能够显示出来呢,其余都不行呢?

rows = sht.api.UsedRange.Rows.count
cols = sht.api.UsedRange.columns.count
rng = sht[0, :cols]

for cell in rng:
    if cell.value == '保单状态':
        print (cell.address)
        a = cell.address
a_range = sht.range("AO2:AO"+str(rows))

cell_list = []
for cell in a_range:
    cell_list.append (cell)
cell_list.reverse ()

print ("	开始调整行和列……")
for cell in cell_list:
    if cell.value is not None:  # 单元格不为空则开始比对
       find_flag = 0  # 匹配标志
       for exist_value in exist_list:
           if cell.value.find (exist_value) != -1: \
              find_flag = 1  # 匹配则将标志置为1
           break
       else:
                continue  # 匹配不上则继续
       if find_flag == 0:  # 没匹配上的删除整行
           cell_to_del = cell.address
    # print(cell_to_del)
           sht.range (cell_to_del).api.EntireRow.Delete ()
    else:  # 单元格为空直接删除
           cell_to_del = cell.address
    # print(cell_to_del)
           sht.range (cell_to_del).api.EntireRow.Delete ()

 

首先,代码中保留的字串定义缺少引号,应该写成:

exist_list = ["正常有效","标体通过","承保","人工核保","新增险种","自核通过"]

在循环删除单元格的代码段中,应该将两个if语句合并为一个,同时需要注意代码缩进的位置。完整的优化后代码如下:

import xlwings as xw
import time
from time import sleep
import os

app = xw.App(visible=True, add_book=False)
wb = app.books.open(r'E:/䐁蕳/营销渠道保单清单.xlsx')
time.sleep(10)
sht = wb.sheets['sheet1']

exist_list = ["正常有效", "标体通过", "承保", "人工核保", "新增险种", "自核通过"]
rows = sht.api.UsedRange.Rows.count
cols = sht.api.UsedRange.columns.count
rng = sht[0, :cols]

for cell in rng:
    if cell.value == '保单状态':
        print(cell.address)
        a = cell.address

a_range = sht.range("AO2:AO" + str(rows))
cell_list = []

for cell in a_range:
    cell_list.append(cell)

cell_list.reverse()
print("开始调整行和列……")

for cell in cell_list:
    if cell.value:  # 单元格不为空则开始比对
        find_flag = 0  # 匹配标志
        for exist_value in exist_list:
            if exist_value in cell.value:
                find_flag = 1  # 匹配则将标志置为1
                break
        if find_flag == 0:  # 没匹配上的删除整行
            cell_to_del = cell.address
            sht.range(cell_to_del).api.EntireRow.Delete()
        else:  # 单元格为空直接删除
            cell_to_del = cell.address
            sht.range(cell_to_del).api.EntireRow.Delete()

wb.save()
wb.close()
app.quit()

此外,应该在代码结尾处加上保存和关闭工作簿以及退出应用程序的代码,如下所示:

wb.save()
wb.close()
app.quit()