问题
openpyxl
seems to be a great method for using Python to read Excel files, but I've run into a constant problem. I need to detect whether a cell is empty or not, but can't seem to compare any of the cell properties. I tried casting as a string and using ""
but that didn't work. The type of cell when it is empty is None
, or NoneType
but I can't figure out how to compare an object to that.
Suggestions? I understand openpyxl
is under development, but maybe this is more a general Python problem.
回答1:
To do something when cell is not empty add:
if cell.value:
which in python is the same as if cell value is not None (i.e.: if not cell.value == None:)
Note to avoid checking empty cells you can use
worksheet.get_highest_row()
and
worksheet.get_highest_column()
Also I found it useful (although might not be a nice solution) if you want to use the contents of the cell as a string regardless of type you can use:
unicode(cell.value)
回答2:
This worked for me.
if cell.value is None:
print("Blank")
else:
print("Not Blank")
回答3:
The
if cell.value is None:
is the best option to use for this case.
if you wish to use it in an iteration, you can use it like this:
ws=wb.active
names=ws['C']
for x in names:
if x.value is None:
break
print(x.value)
The problem with ws.max_column
and ws.max_row
is that it will count blank columns as well, thus defeating the purpose.
回答4:
You can change the cell or cells you wish to validate Also you can code, for example:
import openpyxl
wb = openpyxl.load_workbook("file.xlsx")
sheet = wb.get_sheet_by_name('Sheet1')
if sheet.cell(row = 1, column=7).value == None:
print("Blank")
else:
print("No blank")
来源:https://stackoverflow.com/questions/7907928/openpyxl-check-for-empty-cell