2015-06-03 37 views
1

在完成我的腳本並試圖讓我的頭在此之前,我很短。如何在循環異常後刪除空的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行都是空的。

如何刪除或防止創建這些行?

回答

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 
0

把你的線數據= get_comp_data(data_loaded [Z])成一個try /除外+繼續這樣的:

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

謝謝Anth0kuto。然而,這些線仍然是模糊的。我認爲問題在於,例外情況下z也會跳轉。有沒有辦法,當z從例如跳轉。 5至7,data_loaded [7]沒有放入第7行,但第6行? –