2013-10-21 137 views
2

這是我的第一個問題,我有點壞蟒蛇和英語也一樣,我希望你明白......Python的win32com EXCEL返回None

我通過一個Excel列的行試圖週期。最後一行返回None,我的代碼出了什麼問題?

import win32com.client 

excel = win32com.client.Dispatch("Excel.Application") 

for n in range(1,200): 
    n=repr(n) 
    cell = "b"+ n 
    lis = (excel.ActiveWorkbook.Activesheet.Range(cell)) 
    if lis != "": 
     print(lis) 
    else: 
     print("There's nothing here") 

它爲白色行打印無,而不是在這裏沒有什麼。

非常感謝您的幫助。

+0

'無=「」'因爲空行是爲無明顯恢復,這不:按在評論中討論,lis應作如下分配匹配你的if如果......改成if if'lis!= None' –

回答

0

None != ""。你應該用is not運營商測試:你不應該使用!= None如其他人所說

if lis is not None: 

注意。 From PEP8

Comparisons to singletons like None should always be done with is or is not , never the equality operators.

編輯:!

lis = excel.ActiveWorkbook.Activesheet.Range(cell).GetValue() 
+0

謝謝你的回答。我嘗試但結果如下:Traceback(最近一次調用最後一次): 文件「C:/ Users/************/Read.py」,第8行, lis =( excel.ActiveWorkbook.Activesheet.Range(cells)) AttributeError:'NoneType'對象沒有任何屬性'Activesheet' – user2903746

+0

對不起,我的錯誤,文件xls被關閉......但是用你的解決方案,它將打印None而不是我的白色單元格字符串.... – user2903746

+0

@ user2903746它打印「無」或打印一些空白字符串? – SheetJS

0

因爲空行將返回None值而不是空字符串。

因此,其比作None類型,而不是:

if lis is not None: 
    print(lis) 
else: 
    print("There's nothing here") 

這應該只是罰款。

+0

從PEP8:'比較像None這樣的單身應該總是用is或不是,從來不是平等運算符。' – SheetJS

+0

編輯,對不起。我忘了那個。 – aIKid