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

Python openpyxl操作Excel代码执行成功但修改未生效问题排查

问题复现代码
from openpyxl import load_workbook, Workbook


def find(wb, string):
    res = []
    for ws in wb:
        for row in ws.values:
            for value in row:
                if value is not None and string in str(value):
                    res.append(value)
    return res


if __name__ == '__main__':
    wb = load_workbook("C:\po2.xlsx")
    ws = wb.active
    values = find(wb, "MAN279")  # Replace findme with the string to find

    for value in values:
        ws.append([value])
    wb.save("Book1.xlsx")
问题现象

脚本基于Python openpyxl库编写,预期功能为读取C盘路径下的po2.xlsx文件,查找所有包含字符串"MAN279"的单元格值,将匹配结果逐行追加到活动工作表后保存为Book1.xlsx文件。实际运行无报错、执行成功,但最终输出的Excel文件中未出现预期的追加内容。

问题诱因
  • 路径转义隐患:Windows路径中\为Python字符串转义符,虽然\p不属于标准转义序列不会直接报错,但部分环境下会出现路径解析偏差,导致实际加载的文件并非目标位置的po2.xlsx,最终匹配到的结果列表为空,无内容可追加。
  • 保存路径无明确指向:wb.save("Book1.xlsx")使用相对路径,文件会保存到Python进程的当前工作目录,该目录取决于脚本启动方式(IDE运行/命令行运行/双击运行的工作目录均可能不同),多数情况下用户找错了文件保存位置,误以为没有生成修改后的文件。
  • 无结果校验逻辑:脚本未对匹配结果数量做判断,如果目标文件中确实不存在包含"MAN279"的单元格,追加循环不会执行任何写入操作,保存的文件和原文件完全一致,看起来就是没有修改。
修复方案
  • 路径统一使用原始字符串格式,在路径字符串前加r前缀,避免转义问题,例如加载路径写为r"C:\po2.xlsx"。
  • 增加结果校验打印,执行查找后先输出匹配到的内容条数,确认是否真的查到了目标内容,快速定位是匹配逻辑问题还是文件保存问题。
  • 保存文件时使用明确的绝对路径,避免找错文件位置,例如保存路径指定为r"C:\Book1.xlsx",和源文件放在同一目录方便查找。

修复后可正常运行的完整代码:

from openpyxl import load_workbook


def find(wb, string):
    res = []
    for ws in wb:
        for row in ws.values:
            for value in row:
                if value is not None and string in str(value):
                    res.append(value)
    return res


if __name__ == '__main__':
    # 原始字符串写法避免路径转义问题
    wb = load_workbook(r"C:\po2.xlsx")
    ws = wb.active
    values = find(wb, "MAN279")
    # 打印匹配结果数量做校验
    print(f"匹配到符合条件的内容共{len(values)}条")
    for value in values:
        ws.append([value])
    # 指定绝对保存路径
    wb.save(r"C:\Book1.xlsx")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:06:25