Я ищу решение для объединения ячеек Excel с одинаковым цветом текста в одну ячейку в столбце. На следующем изображении показан файл input_excel.xlsx: -
Введите изображение в код Python
Output_excel.xlsx должен быть возвращен кодом 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 не определяет текст черного цвета? Как можно улучшить код? Может ли кто-нибудь помочь в реализации кода, необходимого для показанных выше изображений?
print(cell_obj.rgb)
передif cell_obj.rgb == "FFFF0000":
. Это должно помочь отладить то, что фактически назначеноcell_obj.rgb
, до его сопоставления. Не знаю, почему, однако, вы используетеif cell_obj is not None:
в этом случае. - person Gerhard   schedule 28.02.2020cell_obj is not None
явно их отфильтровывает. - person Błotosmętek   schedule 28.02.2020print(cell_obj.rgb)
доif cell_obj.rgb == "FFFF0000":
результатов в - Значения должны иметь тип ‹class 'str'› @GerhardBarnard - person The Programmer   schedule 29.02.2020elif
, когда cell_obj нет. Тогда это должны быть те черные, которые вам нужны. Вы также можете установить классstr
перед циклом. - person Gerhard   schedule 01.03.2020