使用Openpyxl获取工作表对象循环遍历Excel文件不是可调用错误

时间:2019-08-22 18:03:52

标签: python excel openpyxl

我目前正在尝试遍历文件夹中的不同excel文件,并将它们合并为一个主文件。但是,当尝试实现此循环时,我收到错误Worksheet对象无法调用。

以下是代码(为我糟糕的命名约定致歉):

 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(row = rowvar_externals,column = i).value = sheet_controller_externals(row = r,column = i).value

builtins.TypeError:“工作表”对象不可调用

1 个答案:

答案 0 :(得分:2)

该行不可读:

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