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

Python遍历文件夹批量修改Excel时仅首个xlsx文件生效问题

批量处理Excel仅生效第一个文件的问题排查

核心错误原因

  • 最直接的问题是return语句缩进错误:当前代码中return和if判断保持同缩进,属于for循环的内部代码块,第一轮循环执行完成后(不管有没有匹配到xlsx格式文件)就会直接终止整个函数运行,根本不会继续遍历后续文件。
  • 存在多个会触发运行报错的隐性代码错误,会导致程序在处理第一个文件时(甚至没开始处理就)中断:
    1. os.chdir()的返回值是None,你将其赋值给path变量后,os.listdir(path)实际传入的是None,虽然默认会枚举当前工作目录,但写法完全不规范,极易出现路径匹配错误。
    2. openpyxl中wb.active是工作簿的属性,不是可调用方法,加括号写成wb.active()会触发类型错误。
    3. Excel单元格不存在08这类带前导零的行号地址,行号从1开始计数,sheet['08']属于无效单元格引用,会直接抛错中断程序。

修正后可运行代码

import os
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter

def sumOfCosts():
    # 先定义目标路径,再切换工作目录
    target_path = r'C:\Users\salvarai\AppData\Roaming\Python\Python310\site-packages\COSTBOMS'
    os.chdir(target_path)
    for file in os.listdir(target_path):
        if file.endswith(".xlsx"):
            wb = load_workbook(filename=file)
            sheet = wb.active  # 去掉括号,active是属性不是方法
            sheet['H8'].value = "Total Cost="  # 修正无效单元格地址
                                      
            char = get_column_letter(8)
            sumchar = get_column_letter(16)
            sheet[sumchar+"8"] = f"=SUM({char}2:{char}1000)"
            wb.save(file)
            wb.close()
    # return移到循环外部,所有文件遍历完成后再退出函数
    return

额外优化建议

如果不需要切换全局工作目录,可以直接拼接文件绝对路径处理,避免影响其他路径相关逻辑,写法更稳妥:

def sumOfCosts():
    target_path = r'C:\Users\salvarai\AppData\Roaming\Python\Python310\site-packages\COSTBOMS'
    for file in os.listdir(target_path):
        if file.endswith(".xlsx"):
            file_path = os.path.join(target_path, file)
            wb = load_workbook(filename=file_path)
            sheet = wb.active
            sheet['H8'].value = "Total Cost="
                                      
            char = get_column_letter(8)
            sumchar = get_column_letter(16)
            sheet[sumchar+"8"] = f"=SUM({char}2:{char}1000)"
            wb.save(file_path)
            wb.close()
    return

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:09:16