使用 Openpyxl 获取 Worksheet 对象的循环 Excel 文件不可调用错误
Looping Through Excel Files using Openpyxl getting Worksheet object is not callable error
我目前正在尝试遍历一个文件夹中的不同 excel 文件,并将它们合并到一个主文件中。但是,在尝试实现此循环时出现错误 Worksheet object is not callable.
这是代码(为我糟糕的命名约定道歉):
import openpyxl
import openpyxl.formula
import pandas
import os
from openpyxl import Workbook
from openpyxl.styles import Alignment
from openpyxl.utils import get_column_letter
from openpyxl import load_workbook
from openpyxl import worksheet
#
# Declaration of openpyxl variables
#
directoryPath = "C:\Users\Desktop\ExcelForReverse\"
productionPath = "C:\Users\Desktop\TransformedReverse.xlsx"
book_empty = Workbook()
book_empty.save(productionPath)
book_empty.create_sheet("Internals")
book_empty.create_sheet("Externals")
book_empty.create_sheet("All Formatted")
del_sheet = book_empty["Sheet"]
book_empty.remove_sheet(del_sheet)
book_empty.save(productionPath)
sheet_externals_con = book_empty["Externals"]
sheet_internals_con = book_empty["Internals"]
os.chdir(directoryPath)
folder_list = os.listdir(directoryPath)
attempt = 1
rowvar_externals = 2
rowvar_internals = 2
for folders, sub_folders, file in os.walk(directoryPath):
for name in file:
if name.endswith(".xlsx"):
filename = os.path.join(name)
print(filename)
wb_controller = load_workbook(filename, data_only=True)
sheet_controller_internals = wb_controller['Input INT']
sheet_controller_externals = wb_controller['Input EXT']
numOfRows_externals = sheet_controller_externals.max_row
numOfCols_externals = sheet_controller_externals.max_column
numOfRows_internals = sheet_controller_internals.max_row
numOfCols_internals = sheet_controller_internals.max_column
if attempt == 1:
for i in range(1,numOfCols_externals+1):
sheet_externals_con.cell(row = 1, column = i).value = sheet_controller_externals.cell(row = 3, column = i).value
for r in range(4,numOfRows_externals+1):
for i in range(1,numOfCols_externals+1):
sheet_externals_con.cell(row = rowvar_externals, column = i).value = sheet_controller_externals(row = r, column = i).value
rowvar_externals = rowvar_externals + 1
if attempt == 1:
for i in range(1,numOfCols_internals+1):
sheet_internals_con.cell(row = 1, column = i).value = sheet_controller_internals.cell(row = 3, column = i).value
for r in range(4,numOfRows_internals+1):
for i in range(1,numOfCols_internals+1):
sheet_internals_con.cell(row = rowvar_internals, column = i).value = sheet_controller_internals(row = r, column = i).value
rowvar_internals = rowvar_internals + 1
attempt = attempt + 1
print("Worked")
book_empty.save(productionPath)
错误信息:
文件第 48 行,在
sheet_externals_con.cell(行=rowvar_externals,列=i).值=sheet_controller_externals(行=r,列=i).值
builtins.TypeError: 'Worksheet' 对象不可调用
该行不应该读作:
sheet_externals_con.cell(row = rowvar_externals, column = i).value = sheet_controller_externals.cell(row = r, column = i).value
哪里
sheet_controller_externals
-> sheet_controller_externals.cell
我目前正在尝试遍历一个文件夹中的不同 excel 文件,并将它们合并到一个主文件中。但是,在尝试实现此循环时出现错误 Worksheet object is not callable.
这是代码(为我糟糕的命名约定道歉):
import openpyxl
import openpyxl.formula
import pandas
import os
from openpyxl import Workbook
from openpyxl.styles import Alignment
from openpyxl.utils import get_column_letter
from openpyxl import load_workbook
from openpyxl import worksheet
#
# Declaration of openpyxl variables
#
directoryPath = "C:\Users\Desktop\ExcelForReverse\"
productionPath = "C:\Users\Desktop\TransformedReverse.xlsx"
book_empty = Workbook()
book_empty.save(productionPath)
book_empty.create_sheet("Internals")
book_empty.create_sheet("Externals")
book_empty.create_sheet("All Formatted")
del_sheet = book_empty["Sheet"]
book_empty.remove_sheet(del_sheet)
book_empty.save(productionPath)
sheet_externals_con = book_empty["Externals"]
sheet_internals_con = book_empty["Internals"]
os.chdir(directoryPath)
folder_list = os.listdir(directoryPath)
attempt = 1
rowvar_externals = 2
rowvar_internals = 2
for folders, sub_folders, file in os.walk(directoryPath):
for name in file:
if name.endswith(".xlsx"):
filename = os.path.join(name)
print(filename)
wb_controller = load_workbook(filename, data_only=True)
sheet_controller_internals = wb_controller['Input INT']
sheet_controller_externals = wb_controller['Input EXT']
numOfRows_externals = sheet_controller_externals.max_row
numOfCols_externals = sheet_controller_externals.max_column
numOfRows_internals = sheet_controller_internals.max_row
numOfCols_internals = sheet_controller_internals.max_column
if attempt == 1:
for i in range(1,numOfCols_externals+1):
sheet_externals_con.cell(row = 1, column = i).value = sheet_controller_externals.cell(row = 3, column = i).value
for r in range(4,numOfRows_externals+1):
for i in range(1,numOfCols_externals+1):
sheet_externals_con.cell(row = rowvar_externals, column = i).value = sheet_controller_externals(row = r, column = i).value
rowvar_externals = rowvar_externals + 1
if attempt == 1:
for i in range(1,numOfCols_internals+1):
sheet_internals_con.cell(row = 1, column = i).value = sheet_controller_internals.cell(row = 3, column = i).value
for r in range(4,numOfRows_internals+1):
for i in range(1,numOfCols_internals+1):
sheet_internals_con.cell(row = rowvar_internals, column = i).value = sheet_controller_internals(row = r, column = i).value
rowvar_internals = rowvar_internals + 1
attempt = attempt + 1
print("Worked")
book_empty.save(productionPath)
错误信息: 文件第 48 行,在 sheet_externals_con.cell(行=rowvar_externals,列=i).值=sheet_controller_externals(行=r,列=i).值
builtins.TypeError: 'Worksheet' 对象不可调用
该行不应该读作:
sheet_externals_con.cell(row = rowvar_externals, column = i).value = sheet_controller_externals.cell(row = r, column = i).value
哪里
sheet_controller_externals
-> sheet_controller_externals.cell