OpenPyXl: пометить строку как заголовок - PullRequest
2 голосов
/ 07 марта 2019

Этот фрагмент отлично работает:

from openpyxl import Workbook

data = [
    ['Year', 'Amount'],
    ['2016', '1000'],
    ['2017', '1300'],
    ['2018', '1500'],
]

wb = Workbook()
for row in data:
    wb.active.append(row)

wb.save('test.xlsx')

Теперь я хотел бы сделать первый ряд (Год, Количество) заголовком.

Как это сделать с openpyxl

Ответы [ 2 ]

1 голос
/ 07 марта 2019

Вы можете пометить первую строку как заголовок с помощью изменения цвета шрифта, замораживания первой строки и создания первой строки как print_title_rows

Добавление цвета шестнадцатеричных значений aRGB к шрифту

font = Font (color = "FF0000")

ws ["A1"]. Font = font
ws ["B1"]. font = font

ссылка для стиля

Если вы пытаетесь заморозить верхнюю строку , то есть первую строку, и добавьте Печать заголовков в первую строку. Вы можете добиться этого, установив freeze_panes и print_title_rows свойств Worsheet.

ws.freeze_panes = "A2"

ws.print_title_rows = '1: 1'

freeze_panes замораживает строки над указанной ячейкой и должен вызываться после вставки некоторых данных.

ссылки для модулей рабочего листа

настройки печати

from openpyxl import Workbook
from openpyxl.styles import Font
data = [
    ['Year', 'Amount'],
    ['2016', '1000'],
    ['2017', '1300'],
    ['2018', '1500'],
]

wb = Workbook()
for row in data:
    wb.active.append(row)
font = Font(color="FF0000")
ws = wb.active
ws.freeze_panes = "A2"
ws["A1"].font = font
ws["B1"].font = font
ws.print_title_rows = '1:1'
wb.save('test.xlsx')
0 голосов
/ 07 марта 2019

просто используйте панд, чтобы справиться с этим, (но выглядит сложно), вы также можете увидеть пример в https://openpyxl.readthedocs.io/en/stable/pandas.html

from openpyxl.utils.dataframe import dataframe_to_rows
wb = Workbook()
ws = wb.active

for r in dataframe_to_rows(df, index=True, header=True):
    ws.append(r)
wb = Workbook()
ws = wb.active

for r in dataframe_to_rows(df, index=True, header=True):
    ws.append(r)

for cell in ws['A'] + ws[1]:
    cell.style = 'Pandas'

wb.save("pandas_openpyxl.xlsx")
...