2016-11-11 116 views
1

我已經爲這個相同問題的許多版本傾注了很多,但根本無法找到一個工作解決方案來循環使用一組單元格並檢查空單元格。使用OpenPyXl檢查空單元格

這裏是我的代碼:

wb = openpyxl.Workbook(write_only=False) 
sheet = wb.get_sheet_by_name('Sheet') 
for i in range(1, 20): 
    if sheet.cell(row=i, column=1).value == None or 'None': 
     print('Space' + str(i)) 
     sheet.cell(row=i, column=1) = i 
    else: 
     pass 

wb.save('filename.xlsx') 

但由於某些原因將其寫入空白單元格,並覆蓋其中有寫在他們值的單元格。

我註釋掉循環,我發現如果我運行代碼,它將刪除手動寫入電子表格的所有內容。也許這是問題的一部分?

而且我用的LibreOffice如果有差別

+0

if語句的第二部分總是會計算爲True,這就是爲什麼您會覆蓋現有單元格的原因。 –

回答

3

什麼查理提到當然是正確的。

在Python非空字符串賦值爲True,所以你實際測試,如果單元格的值是無,或者如果bool('None'),而後者總是True,因此您的病情始終計算爲True

要解決您的特定情況,我不確定您爲什麼要嘗試使用'None'測試空單元。

如果你真的想這樣做,你的情況應該是這樣的:

if sheet.cell(row=i, column=1).value in [None,'None'] 

如果你想爲無或空字符串測試,所以None or ''那麼當然你的情況應該是:

if sheet.cell(row=i, column=1).value in [None,''] 

希望這會讓你走上正軌。

+0

感謝隊友。它像一個魅力。 –