Как объединить текстовые ячейки одного цвета шрифта в Excel, используя python? - PullRequest
0 голосов
/ 01 марта 2020

Я относительно новичок в кодировании в 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, который может успешно дать ожидаемый результат?

1 Ответ

0 голосов
/ 01 марта 2020

Вы можете пометить цвета в Excel в другом столбце, а затем прочитать этот файл Excel с помощью pandas. В формуле проверки цветов вы можете увидеть Формула Excel, чтобы получить цвет ячейки . Для другой группировки вы можете увидеть Поиск строк с такими же значениями столбцов в pandas dataframe

...