Объединить ячейки Excel с одинаковым цветом текста в одну с помощью Python?

Я ищу решение для объединения ячеек Excel с одинаковым цветом текста в одну ячейку в столбце. На следующем изображении показан файл input_excel.xlsx: -

Введите изображение в код Python

Output_excel.xlsx должен быть возвращен кодом Python следующим образом: -

Вывод кода Python

Я просмотрел следующую ссылку: Подмножество фрейма данных на основе цвета ячейки и цвета текста в листе Excel, но невозможно объединить ячейки с черным цветом текста.

Для обнаружения красного текста и черного текста в Excel был реализован следующий код: -

# importing openpyxl module 
import openpyxl 

# Give the location of the file 
path = "E:\\input_excel.xlsx"

# workbook object is created 
wb_obj = openpyxl.load_workbook(path) 

sheet_obj = wb_obj.active 
m_row = sheet_obj.max_row 
for i in range(1, m_row + 1): 
    cell_obj = sheet_obj.cell(row = i, column = 1).font.color
    if cell_obj is not None:    # to catch cells that do have a color object
        if cell_obj.rgb == "FFFF0000":
           print(cell_obj.rgb)
        elif cell_obj.rgb == "00000000":
           print(cell_obj.rgb)

Приведенный выше код всегда возвращает шестнадцатеричное значение красного текста следующим образом: -

FFFF0000
FFFF0000
FFFF0000
FFFF0000
FFFF0000

Почему openpyxl не определяет текст черного цвета? Как можно улучшить код? Может ли кто-нибудь помочь в реализации кода, необходимого для показанных выше изображений?


person The Programmer    schedule 28.02.2020    source источник
comment
что произойдет, если вы поместите print(cell_obj.rgb) перед if cell_obj.rgb == "FFFF0000":. Это должно помочь отладить то, что фактически назначено cell_obj.rgb, до его сопоставления. Не знаю, почему, однако, вы используете if cell_obj is not None: в этом случае.   -  person Gerhard    schedule 28.02.2020
comment
Я считаю, что черный цвет является цветом по умолчанию, поэтому ячейки, которые вы называете черными, на самом деле являются ячейками без установленного атрибута цвета; и ваше условие cell_obj is not None явно их отфильтровывает.   -  person Błotosmętek    schedule 28.02.2020
comment
print(cell_obj.rgb) до if cell_obj.rgb == "FFFF0000": результатов в - Значения должны иметь тип ‹class 'str'› @GerhardBarnard   -  person The Programmer    schedule 29.02.2020
comment
@GerhardBarnard Есть еще предложения?   -  person The Programmer    schedule 01.03.2020
comment
В любом случае вы можете установить для класса str перед печатью, просто сделайте еще elif, когда cell_obj нет. Тогда это должны быть те черные, которые вам нужны. Вы также можете установить класс str перед циклом.   -  person Gerhard    schedule 01.03.2020