在完成我的剧本之前,我很短暂,并试图解决这个问题。
我有一个脚本,通过循环将数组(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行都为空。
如何删除或阻止创建这些行?
答案 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