如何使用 openpyxl 在 for 循环中读取 excel 个文件?

How to read excel files in a for loop with openpyxl?

这对我来说似乎很棘手。假设我有一个嵌套在目录树中的 excel 文件,其中包含一些非空列。我想获取 F 列中所有值的总和 openpyxl:

file1.xlsx
A  B  C  D  E  F
               5
               7
               11
               17
               20
               29
               34

我的看法如下,但这是错误的:

import os
from openpyxl import load_workbook

directoryPath=r'C:\Users\MyName\Desktop\MyFolder' #The main folder
os.chdir(directoryPath)
folder_list=os.listdir(directoryPath)
for folders, sub_folders, file in os.walk(directoryPath): #Traversing the sub folders
    for name in file:
        if name.endswith(".xlsx"):
            filename = os.path.join(folders, name)
            wb=load_workbook(filename, data_only=True)
            ws=wb.active
            cell_range = ws['F1':'F7'] #Selecting the slice of interest
            sumup=0
            for row in cell_range:
                sumup=sumup+cell.value

虽然 运行 我得到 NameError: name 'cell' is not defined。如何解决这个问题?

当前的主要错误是您只是遍历行,而不是该行中的列(单元格)。

在你的代码末尾,你可以这样做(替换你代码的两端行):

for row in cell_range: # This is iterating through rows 1-7
    for cell in row: # This iterates through the columns(cells) in that row
        value = cell.value
        sumup += value

您通过每个 excel 文件确定您认为这不是 运行。这将非常容易调试。删除

之后的所有代码
ws=wb.active

并添加

print(name + ' : ' + ws)

这将打印出所有 excel 文件名及其活动 sheet。如果它打印出超过 1 个,那么它显然正在抓取 excel 个文件...