如何使用 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 个文件...
这对我来说似乎很棘手。假设我有一个嵌套在目录树中的 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 个文件...