如果单元格为空,openPyxl会放置一个None值,但我认为我的逻辑会阻止将None值填充到数组中。
from openpyxl import Workbook
from openpyxl import load_workbook
wb = load_workbook("sample.xlsx")
sheetArray = []
for sheetName in wb.sheetnames:
sheetArray.append(sheetName)
# print(sheetName)
sheet_1 = wb[sheetArray[0]]
lastRow = sheet_1.max_row
# print(lastRow)
clientIDArray = []
for row in sheet_1.iter_rows(min_row=1, max_row=lastRow, min_col=1, max_col=1):
if [row[0].value] != "None":
clientIDArray.append(row[0].value)
for id in clientIDArray:
print(id)
wb.close()
答案 0 :(得分:2)
首先,if [row[0].value] != "None":
正在比较单个元素为row[0].value
的列表。该列表永远不能等于None
或"None"
或除列表之外的任何其他内容。您可能只想比较row[0].value
。
其次,您尝试过滤的值大概是None
值,而不是字符为"None"
的字符串值。
第三,如果最后一个是正确的,那么您几乎总是希望使用is
而不是==
来与None
进行比较。
所以:
if row[0].value is not None:
答案 1 :(得分:1)
你应该改变这样的代码。 None
是内置对象。
https://docs.python.org/3.6/library/constants.html#None
if row[0].value is not None:
答案 2 :(得分:0)
你放在哪里
if [row[0].value] != "None":
clientIDArray.append(row[0].value)
[row[0].value]
正在创建一个以row[0].value
作为项目的列表。这意味着作为一个列表,它永远不会是None
,因此你的if语句总是会执行,None
值会被放入数组中。
如果row[0].value
为None
,那么您的if语句将变为
if [None] != "None":
,列表永远不能是None
。
此外,您应该使用None
而不是"None"