Openpyxl check for empty cell

风格不统一 提交于 2019-11-29 11:52:28

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!