Я относительно новичок в кодировании в python, поэтому застрял с проблемой кодирования, чтобы объединить подобный цвет шрифта текста в ячейке из входного Excel и сохранить выходные данные обратно в файл Excel. Входной файл Excel выглядит следующим образом: -
------------
| John | #black color font text
------------
| Charlie | #black color font text
------------
| Sean | #red color font text
------------
| Johnny | #red color font text
------------
| Tom | #black color font text
------------
| Ronny | #red color font text
------------
| Larry | #black color font text
------------
Текст шрифта черного цвета должен быть объединен, а текст шрифта красного цвета должен быть объединен вместе. Вывод должен быть разбит на блоки текста черно-красный-черный . Первая группа ячеек Block-1 должна иметь следующие значения: -
--------------
|John Charlie| #black color font text
--------------
|Sean Johnny | #red color font text
--------------
|Tom | #black color font text
---------------
Вторая группа ячеек Block-2, добавляемая в выходной файл Excel, должна иметь последний шрифт черного цвета текста из блока-1 и остальные значения должны следовать.
---------------
|Tom | #black color font text
---------------
|Ronny | #red color font text
---------------
|Larry | #black color font text
---------------
Конечный выходной файл Excel должен представлять собой комбинацию Block-1 и Block-2, что означает, что 'Tom' должен повторяться дважды в выходном файле Excel.
import xlrd
book = xlrd.open_workbook("input-out.xls", formatting_info=True)
def font_color(xf):
font = book.font_list[xf.font_index]
if not font:
return None
return get_color(font.colour_index)
def get_color(color_index):
return book.colour_map.get(color_index)
red_rows = []
black_rows = []
sheets = book.sheet_names()
for index, sh in enumerate(sheets):
sheet = book.sheet_by_index(index)
rows, cols = sheet.nrows, sheet.ncols # 11, 1 - int type
for row in range(1,rows):
for col in range(cols):
c = sheet.cell(row, col)
xf = book.xf_list[c.xf_index]
color = font_color(xf)
if 255 not in color: # black rows
black_rows.append(row)
else: # red rows
red_rows.append(row)
Реализован выше python код для обнаружения красного и черного цветного шрифта, хотя я не могу продолжить, как объединить ячейки. Можно ли объединить значения ячеек в кадре данных pandas или есть какой-либо другой модуль python, который может успешно дать ожидаемый результат?