2

这是我的第一个问题,我的python和英语也有点差,希望你能理解......

我正在尝试循环浏览 excel 列中的行。最后几行返回无,我的代码有什么问题?

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")

它为白色行打印 None ,而不是 There's nothing here。

非常感谢您的帮助。

4

2 回答 2

0

因为空行将返回一个None值而不是空字符串。

因此,将其与None类型进行比较:

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

这应该工作得很好。

于 2013-10-21T15:55:34.920 回答
0

None != "". 您应该使用is not操作员进行测试:

if lis is not None:

请注意,您不应该!= None像其他人建议的那样使用。 来自 PEP8

与 None 等单例的比较应始终使用isor完成,而不应使用is not相等运算符。

编辑:根据评论中的讨论,lis应分配如下:

lis = excel.ActiveWorkbook.Activesheet.Range(cell).GetValue()
于 2013-10-21T16:01:27.940 回答