Openpyxl - использовать импортированную функцию в другом файле - PullRequest
1 голос
/ 14 апреля 2020

У меня есть Рабочая тетрадь с несколькими листами, где я хочу запускать одну и ту же функцию на каждом листе. Чтобы получить более чистый код, я разделил листы Workbook на разные модули python.

В файле sheet_1.py у меня есть следующая функция:

>>>sheet_1.py
#This adds the text "Month: April" in the last row, first column cell
def addTitle():
    for col in ws2.iter_cols(min_row=ws2.max_row, max_row=ws2.max_row, min_col=1, max_col=1):
        for cell in col:
            cell.value = "Month: April"

    wb2.save(destination)
    wb2.close()

Я хочу использовать ту же функцию (которая добавляет «Месяц: апрель») для запуска на sheet_2.py и другие листы (sheet_3.py ...)

Как мне сделать это, как сейчас, если я сделаю следующее:

>>>sheet_2.py
from sheet_1 import addTitle
addTitle()

Это запустит addTitle для sheet_1.py вместо sheet_2.py

Уверен, мне здесь чего-то не хватает ...

Заранее спасибо !!

1 Ответ

1 голос
/ 14 апреля 2020

Вы можете просто открыть свою книгу в одном файле .py и просмотреть все листы. На самом деле не нужно запускать его на отдельных скриптах.

В openpyxl есть метод, называемый .get_sheet_names(). Используйте его, чтобы получить список всех листов в вашей рабочей книге и выполнить итерацию по нему:

list_of_sheets = wb.get_sheet_names()
for sheet in list_of_sheets:
ws = wb[sheet]
    for col in ws.iter_cols(min_row=ws.max_row, max_row=ws.max_row, min_col=1,   max_col=1):
        for cell in col:
            cell.value = "Month: April"

В конце у вас будет один уникальный скрипт .py, который сделает все, что вам нужно.

...