如何在循环异常后删除空的Excel行?

时间:2015-06-03 08:49:13

标签: python excel

在完成我的剧本之前,我很短暂,并试图解决这个问题。

我有一个脚本,通过循环将数组(data)中的某些信息放入Excel行。 data_loaded是一个包含脚本条目的数组。这看起来像这样:

    from get_comp_data import get_comp_data
    from openpyxl import Workbook
    wb = Workbook()
    ws = wb.active
            for z in range(len(data_loaded)):
                try:
                    data = get_comp_data(data_loaded[z])
                    print z
                    ws['A'+str(z+1)] = data[0]
                    ws['B'+str(z+1)] = data[1]
                    ws['C'+str(z+1)] = data[2]
                    ws['D'+str(z+1)] = data[3]
                    ws['E'+str(z+1)] = data[4]
                    ws['F'+str(z+1)] = data[5]
                    ws['G'+str(z+1)] = data[6]
                    ws['H'+str(z+1)] = data[7]
                    ws['I'+str(z+1)] = data[8]
                    ws['J'+str(z+1)] = data[9]
                    wb.save("test.xlsx")
                except Exception:
                    pass

但是,有时会在get_comp_data出错的情况下引发异常。每次引发异常时,Excel行都为空。

如何删除或阻止创建这些行?

2 个答案:

答案 0 :(得分:0)

将您的行 data = get_comp_data(data_loaded [z])放入try / except + continue,如下所示:

try:
    data = get_comp_data(data_loaded[z])
except :
    continue

答案 1 :(得分:0)

无论是否发生异常,

z都会计算在内,因此会跳过行。代码必须以一种方式编写,只有在没有错误且行实际被填满时,行号才会递增。

无论如何,迭代序列的索引值而不是项目是“unpythonic”。

from string import ascii_uppercase
from get_comp_data import get_comp_data
from openpyxl import Workbook

workbook = Workbook()
worksheet = workbook.active

# ...

row_number = 1
for item in data_loaded:
    try:
        data = get_comp_data(item)
    except Exception:
        pass  # Intentionally ignored.
    else:
        for column_name, item in zip(ascii_uppercase, data):
            worksheet[column_name + str(row_number)] = item
        row_number += 1