from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
worksheet = workbook.Worksheets[0]
worksheet.Name = "Пример комплексного стиля"
# Создание строки заголовка
title = worksheet.Range["A1:E1"]
title.Merge()
title.Text = "Информация о сотрудниках"
title.Style.Font.FontName = "Arial"
title.Style.Font.Size = 16
title.Style.Font.Color = Color.get_White()
title.Style.Color = Color.get_DarkBlue()
title.Style.HorizontalAlignment = HorizontalAlignType.Center
title.Style.VerticalAlignment = VerticalAlignType.Center
title.RowHeight = 30
# Установка заголовков
headers = ["ID", "Имя", "Отдел", "Дата приема", "Зарплата"]
for i, header in enumerate(headers):
cell = worksheet.Range[2, i + 1]
cell.Text = header
cell.Style.Font.IsBold = True
cell.Style.Color = Color.get_LightGray()
cell.Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Medium
cell.Style.Borders[BordersLineType.EdgeBottom].Color = Color.get_DarkBlue()
# Заполнение данных
data = [
[1, "Чжан Сан", "Технический отдел", "2020-05-15", 15000],
[2, "Ли Си", "Маркетинговый отдел", "2019-08-22", 12000],
[3, "Ван У", "Отдел кадров", "2021-03-10", 13500],
[4, "Жао Лю", "Финансовый отдел", "2018-11-05", 16000]
]
for r, row in enumerate(data):
for c, value in enumerate(row):
cell = worksheet.Range[r + 3, c + 1]
if c == 3: # Дата
cell.DateTimeValue = DateTime.Parse(value)
cell.NumberFormat = "yyyy-mm-dd"
elif c == 4: # Зарплата
cell.NumberValue = value
cell.NumberFormat = "$#,##0.00"
else:
cell.Text = str(value)
# Установка чередующихся цветов строк
if r % 2 == 0:
cell.Style.Color = Color.get_LightYellow()
else:
cell.Style.Color = Color.get_LightCyan()
# Установка границ
worksheet.Range["A2:E6"].BorderAround(LineStyleType.Medium, Color.get_Black())
worksheet.Range["A2:E6"].BorderInside(LineStyleType.Thin, Color.get_Gray())
# Авто подгонка ширины столбцов
for i in range(1, 6):
worksheet.AutoFitColumn(i)
# Добавление условного форматирования - выделение ячеек с зарплатой больше 14000
format = worksheet.Range["E3:E6"].ConditionalFormats.AddCondition()
format.FormatType = ConditionalFormatType.CellValue
format.Operator = ComparisonOperatorType.Greater
format.FirstFormula = "14000"
format.FontColor = Color.get_Red()
format.IsBold = True
# Получение выделенного диапазона
locatedRange = worksheet.AllocatedRange
# Проход по строкам
for rowNum in range(1, locatedRange.RowCount):
# Выравнивание текста по центру
locatedRange.Rows[rowNum].HorizontalAlignment = HorizontalAlignType.Center
locatedRange.Rows[rowNum].VerticalAlignment = VerticalAlignType.Center
# Установка высоты строки
locatedRange.Rows[rowNum].RowHeight = 20
# Проход по столбцам
for columnNum in range(0, locatedRange.ColumnCount):
# Установка ширины столбца
if(columnNum == 2):
locatedRange.Columns[columnNum].ColumnWidth = 19
else:
locatedRange.Columns[columnNum].ColumnWidth = 14
# Сохранение книги
workbook.SaveToFile("ComprehensiveStyleExample.xlsx", FileFormat.Version2016)
workbook.Dispose()