Заполните цвета, используя условное форматирование - PullRequest
0 голосов
/ 13 марта 2019

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

import io

df = pd.read_table(io.StringIO('''\
A       B              C          
SDF     899501607.2   -26152567.7
ISB     464284188.7   -20278910.23

Я хочу заполнить желтый цвет для заголовка A, красный для заголовка B и синий для заголовка C, используя pd.ExcelWriter.Я попробовал ниже код, чтобы заполнить желтый цвет для столбца A, но он заполняет значения заголовка желтым цветом, а не просто заголовок (ячейка A1)

writer = pd.ExcelWriter("output_file_name.xlsx", engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
yellow_format = workbook.add_format({'bg_color':'yellow'})
l = ['A1:A1']
for columns in l:
    worksheet.set_column(columns, 25, yellow_format)

1 Ответ

0 голосов
/ 13 марта 2019

xlsxwriter предназначен для создания файлов Excel, но не может их читать.Он также не может отформатировать определенную ячейку после того, как она была написана.

Но вы можете использовать один из этих двух методов для форматирования только ваших заголовков.

Использование conditional_format (самый быстрый):

yellow_format = workbook.add_format({'bg_color': 'yellow'})
red_format = workbook.add_format({'bg_color': 'red'})
blue_format = workbook.add_format({'bg_color': 'blue'})

worksheet.conditional_format("A1", {'type': 'no_blanks', 'format': yellow_format})
worksheet.conditional_format("B1", {'type': 'no_blanks', 'format': red_format})
worksheet.conditional_format("C1", {'type': 'no_blanks', 'format': blue_format})

Использование комбинации set_column и set_row (медленно, если вы хотите установить белый цвет для каждой строки):

yellow_format = workbook.add_format({'bg_color': 'yellow'})
red_format = workbook.add_format({'bg_color': 'red'})
blue_format = workbook.add_format({'bg_color': 'blue'})
white_format = workbook.add_format({'bg_color': 'white'})

worksheet.set_column(first_col=0, last_col=0, cell_format=yellow_format)
worksheet.set_column(first_col=1, last_col=1, cell_format=red_format)
worksheet.set_column(first_col=2, last_col=2, cell_format=blue_format)

for i in range(1, 1048576):
    worksheet.set_row(row=i, cell_format=white_format)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...