2011-10-26 67 views
7

openpyxl có vẻ là một phương pháp tuyệt vời để sử dụng Python để đọc các tệp Excel, nhưng tôi đã gặp sự cố không đổi. Tôi cần phải phát hiện xem một ô có trống hay không, nhưng dường như không thể so sánh bất kỳ thuộc tính ô nào. Tôi đã cố gắng truyền dưới dạng chuỗi và sử dụng "" nhưng điều đó không hiệu quả. Loại ô khi nó trống rỗng là None hoặc NoneType nhưng tôi không thể tìm ra cách so sánh một đối tượng với đối tượng đó.kiểm tra openpyxl cho ô trống

Đề xuất? Tôi hiểu openpyxl đang được phát triển, nhưng có lẽ đây là một vấn đề chung về Python.

+2

Một lần nữa, thêm chút tìm kiếm đã mang lại những câu trả lời: sử dụng 'nếu tế bào. value là None' – MechEngineer

Trả lời

15

Để làm điều gì đó khi tế bào không phải là rỗng add:

if cell.value: 

mà trong python cũng giống như nếu giá trị của ô không phải là hành Không (ví dụ: nếu không muốn nói cell.value == Không :)

Lưu ý để tránh kiểm tra các ô trống, bạn có thể sử dụng

worksheet.get_highest_row() 

worksheet.get_highest_column() 

Ngoài ra tôi thấy nó hữu ích (mặc dù có thể không phải là một giải pháp tốt đẹp) nếu bạn muốn sử dụng các nội dung của các tế bào như là một chuỗi bất kể loại bạn có thể sử dụng:

unicode(cell.value) 
+9

** Xem ra! ** 'bool (cell.values) == Sai' nếu' cell.value = 0' –

+1

Trong openpyxl mới nhất, đã loại bỏ phương thức get_highest_row và get_highest_column. Chúng đã được thay thế bằng thuộc tính max_row và max_column – Shoham

7

này đã làm việc cho tôi.

if cell.value is None: 
    print("Blank") 
else: 
    print("Not Blank") 
-2

Bạn có thể thay đổi các ô hoặc các ô mà bạn muốn xác Ngoài ra bạn có thể mã hóa, ví dụ:

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") 
Các vấn đề liên quan