使用xlrd库读取Excel文件时如何检测单元格是否为空?

11

我使用 row_valuescol_values 函数处理 Excel 文件:

import xlrd
workbook = xlrd.open_workbook( filename )
sheet_names = workbook.sheet_names()
for sheet_name in sheet_names:
  sheet = workbook.sheet_by_name( sheet_name )    
  # ...
  row_values = sheet.row_values( rownum ) 
  # ...
  col_values = sheet.col_values( colnum )
例如,我得到了一个作为列表的col_values。如果在某一列中遇到空单元格怎么办?例如,单元格(1,1)不为空,单元格(1,2)为空,单元格(1,3)不为空?我如何检测单元格(1,2)是否为空?
对于大多数生成Excel文件的知名程序而言,当存在空单元格时,我是否会得到一个包含空字符串值的列表?
1个回答

19

你可以明确地检查 sheet.cell_type(rowno, colno) in (xlrd.XL_CELL_EMPTY, xlrd.XL_CELL_BLANK),但文档中已经声明在这种情况下值将为u''

而不是使用row_values,你也可以使用row(n),它返回一个Cell对象列表,其中包含.value.cell_type属性。


这已经是将近8年后了,我收到了“'Cell' object has no attribute 'cell_type'”的错误信息。 - Ali Tou
@AliTou 这可能是一个绕路的方法,但我只是将单元格的值转换为字符串并将其与空字符串进行比较(例如 cell_value = str(cell.value); cell_empty = (cell_value == "")))。 - jack.py

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接