Можно ли создать вертикальную черту в таблице с помощью openpyxl?

Я использую Python для создания xlsx файлы с openpyxl пакет. Я создал простую таблицу и хочу разделить столбцы вертикальной чертой. Вопрос: Как создать вертикальную черту через openpyxl?

1 ответ

Решение

Вопрос: Как создать вертикальную черту через openpyxl?

Вы можете использовать стиль border или же fill,

OpenPyXL Работа со стилями
Стили используются для изменения внешнего вида ваших данных при отображении на экране. Они также используются для определения форматирования чисел.

Например:

from openpyxl import Workbook
wb = Workbook()
ws = wb.worksheets[0]

data = [['A1', '', 'C1', '', 'E1'], ['A2', '', 'C2', '', 'E2'], ['A3', '', 'C3', '', 'E3'], ['A4', '', 'C4', '', 'E4']]
for row, rData in enumerate(data, 1):
    ws.append(rData)

from openpyxl.styles import Side, Border, PatternFill, Color
thin = Side(border_style="thin", color="000000")
thin_white = Side(border_style="thin", color="FFFFFF")
border = Border(left=thin)
fill = PatternFill("solid", fgColor="666666")

from openpyxl.utils import range_boundaries
ws.column_dimensions['B'].width = 1
ws.column_dimensions['D'].width = 0.5
min_col, min_row, max_col, max_row = range_boundaries('B1:D4')
B = 0; D = 2
for row_cells in ws.iter_rows(min_col=min_col, min_row=min_row,
                                   max_col=max_col, max_row=max_row):

    row_cells[B].border = border
    row_cells[D].fill = fill
    row_cells[D].border = Border(left=thin_white, right=thin_white)

wb.save('../test/test.xlsx')

Выход: Стиль Граница и заливка

Протестировано с Python: 3.4.2 - openpyxl: 2.4.1 - LibreOffice: 4.3.3.2

Другие вопросы по тегам