You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用XLUtils读取Excel时空单元格返回None值如何解决

问题原因
  • openpyxl读取Excel空单元格时,cell.value属性默认返回None,这是框架的默认行为。
  • XLUtils中getRowCount方法统计的是工作表所有被标记为「已使用」的行的总数,而非仅包含有效数据的行数。如果之前在后续行输入过内容再删除,Excel仍会将这些行标记为已使用,导致循环范围超出实际有数据的行,遍历空行时就会持续输出None。
解决方法

1. 处理空单元格返回None的问题

修改readData方法,对返回值做默认值替换,比如空单元格返回空字符串:

def readData(file,sheetName,rownum,columnno):
    workbook = openpyxl.load_workbook(file)
    # 注意:get_sheet_by_name已被弃用,推荐直接用方括号获取工作表
    sheet = workbook[sheetName]
    value = sheet.cell(row=rownum,column=columnno).value
    # 空单元格返回空字符串,也可以根据需求替换为其他默认值
    return value if value is not None else ""

2. 避免遍历无有效数据的空行

调整遍历逻辑,遇到连续空行时提前终止循环,修改执行业务代码如下:

import XLUtils

path = "C:/Users/PycharmProjects/Book2.xlsx"
rows=XLUtils.getRowCount(path,'Sheet2')

for r in range(2,rows+1):
    id=XLUtils.readData(path,"Sheet2",r,1)
    url=XLUtils.readData(path,"Sheet2",r,2)
    # 两列均无有效值时,默认后续无有效数据,终止循环
    if not id and not url:
        break
    print(id)
    print(url)

如果需要保留None值不做替换,也可以在打印前增加非空判断,仅输出有值的内容即可。

内容的提问来源于stack exchange,提问作者SKK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:27:02