Как разделить объедененные ячейки в excel с помощью python

Пишу проект 'Рассылка расписания' и столкнулся с проблемой, что в excel файле расписания есть объедененные ячейки (это обозначает, что урок спаренный), что не очень хорошо сказывается на правильности работы программы.

Так вот: Есть расписание

введите сюда описание изображения

Если для 11а расписание присылается, то для 11б присылается такое:

введите сюда описание изображения

Использую библиотеку openpyxl. Можно ли как то разделить ячейки, чтобы значение оставалось и в первом, и во втором столбце?


Ответы (2 шт):

Автор решения: LolPopGames

Я думаю можно сделать условие:

Если значение в ечейке равно Окно, то мы заменяем его на значение из 11а

→ Ссылка
Автор решения: Fox Fox

Этот скрипт разъединяет все спаренные ячейки, горизонтально и вертикально, и заполняет их существующими значениями (поскольку понять как разделять их содержимое невозможно):

import os

import openpyxl

print("-" * 50 + "\nРазъединение ячеек в Excel:\n" + "-" * 50)

file = 'ваш_файл.xlsx'
new_file = 'ваш_файл_разъединённый.xlsx'

# Открываем существующий файл Excel:
workbook = openpyxl.load_workbook(file)
sheet = workbook.active

# Создаём список объединенных ячеек:
merged_cells = list(sheet.merged_cells.ranges)

# Проходим по всем объединённым ячейкам:
for merged_cell in merged_cells:
    # Разъединяем ячейки:
    sheet.unmerge_cells(str(merged_cell))
    # Копируем значение в каждую ячейку:
    top_left_cell = sheet.cell(row=merged_cell.min_row, column=merged_cell.min_col)
    for row in range(merged_cell.min_row, merged_cell.max_row + 1):
        for col in range(merged_cell.min_col, merged_cell.max_col + 1):
            sheet.cell(row=row, column=col).value = top_left_cell.value

# Сохраняем изменения:
workbook.save(new_file)
print("Результат обработки сохранён в:", new_file)

print("Нажмите любую клавишу для продолжения...")
os.system("pause > nul" if os.name == "nt" else "read > /dev/null")
→ Ссылка