Есть ли способ форматировать ячейки в одном столбце на основе ячеек в другом столбце для той же строки? (openpyxl)

#python #excel #pandas #openpyxl

#python #excel #pandas #openpyxl

Вопрос:

У меня есть книга Excel с листом, который выглядит следующим образом:

 Label    Measure    Value
A        Cost       -23.12
A        Percentage 0.357
B        Cost       48.1
C        Location   NY
C        Cost       13
  

Что я хочу сделать, это отформатировать ячейки в Value столбце на основе соответствующих ячеек в Measure столбце. В этом случае, если в ячейке указано «Стоимость», то в ячейке в той же строке и в Value столбце должно быть указано «$ 23.12» (применяя формат валюты.) Форматирование Value ячеек, когда Measure это «Процент», должно быть в процентах, для «Местоположения», текста.

Конечный результат будет выглядеть так:

 Label    Measure    Value
A        Cost       $ -23.12
A        Percentage 35.7 %
B        Cost       $ 48.10
C        Location   NY
C        Cost       $ 13.00
  

Я использую pandas для создания этих данных. Я бы просто внес эти изменения в фрейм данных перед экспортом в Excel. Однако есть еще одна часть форматирования, которую мне нужно выполнить. Я хочу выделить все числовые ячейки в Value столбце — зеленым, если положительный, и красным, если отрицательный. Но я не хочу касаться ячеек, соответствующих «Местоположению».

Я могу сделать что-то вроде этого:

 workbook[sheet].conditional_formatting.add('C2:C6', CellIsRule(operator='greaterThan', formula=['0'], fill=green_fill, font=green_font))
workbook[sheet].conditional_formatting.add('C2:C6', CellIsRule(operator='lessThan', formula=['0'], fill=red_fill, font=red_font))
  

Это работает для всех ячеек в строке C, но как я могу сделать это для конкретного подмножества интересующих меня ячеек?

Комментарии:

1. Здесь вы можете использовать числовые форматы, а не условное форматирование.