如何使用Python的xlrd将Excel空单元格读取为数值0
解决空单元格求和报错的方案
问题根源
你用replace('', 0)报错有两个原因:
replace()是字符串的专属方法,当单元格存储的是数值类型时,调用该方法会直接触发错误;replace()要求替换前后的参数类型一致,你试图把字符串''换成整数0,类型不匹配导致TypeError。
修正代码
通过一个辅助函数统一处理单元格值,确保空内容转为0,所有参与计算的内容都是数字类型:
import xlrd def format_cell_value(cell_val): # 处理空字符串、空白内容,转为0 if cell_val == '' or str(cell_val).strip() == '': return 0 # 尝试转为浮点型,非数字内容也转为0 try: return float(cell_val) except ValueError: return 0 workbook = xlrd.open_workbook("xxx.xls") sheets = workbook.sheet_names() tr_elect1 = [] for sheet_name in sheets: sh = workbook.sheet_by_name(sheet_name) # 分别处理两个目标单元格的值 val_col1 = format_cell_value(sh.cell(13, 1).value) val_col2 = format_cell_value(sh.cell(13, 2).value) # 求和后追加到列表 tr_elect1.append(val_col1 + val_col2) # 查看结果 print(tr_elect1)
代码说明
format_cell_value()函数:全面覆盖空字符串、空白单元格的情况,同时兼容可能的非数字内容,确保返回值都是可计算的数字;- 循环中先处理每个单元格的值,再执行求和操作,彻底避免类型不匹配的问题。
内容的提问来源于stack exchange,提问作者MariaJoseMunozRojas
相关产品推荐
相关产品推荐

