Горизонтальное выравнивание текста в openpyxl
Я пытаюсь изменить выравнивание текста по центру 2 Объединенных продаж, я нашел некоторые ответы, которые не работали для моего случая
currentCell = ws.cell('A1')
currentCell.style.alignment.horizontal = 'center' #TypeError: cannot set horizontal attribute
#or
currentCell.style.alignment.vertical = Alignment.HORIZONTAL_CENTER #AttributeError: type object 'Alignment' has no attribute 'HORIZONTAL_CENTER'
оба не работают, есть ли другие способы сделать это?
4 ответов
вы можете достичь этого, используя Python XlsxWriter библиотека.
import xlsxwriter
workbook = xlsxwriter.Workbook('example.xlsx')
worksheet = workbook.add_worksheet()
cell_format = workbook.add_format({'align': 'center'})
worksheet.merge_range('A1:B1', "")
worksheet.write_rich_string('A1','Example', cell_format)
workbook.close()
здесь я объединил ячейки A1, B1 и добавил параметр формата ячейки, который включает параметр align, назначенный в качестве центра.
да, есть способ сделать это с помощью openpyxl:
from openpyxl.styles import Alignment
currentCell = ws.cell('A1') #or currentCell = ws['A1']
currentCell.alignment = Alignment(horizontal='center')
надеюсь, это поможет вам
это то, что, наконец, сработало для меня с последней версией от PIP (2.2.5)
# center all cells
for col in w_sheet.columns:
for cell in col:
# openpyxl styles aren't mutable,
# so you have to create a copy of the style, modify the copy, then set it back
alignment_obj = cell.alignment.copy(horizontal='center', vertical='center')
cell.alignment = alignment_obj
ни одно из других решений не работало для меня, так как мое решение требует openpyxl и, по крайней мере, в ячейке 2.1.5.выравнивание не может быть установлено напрямую.
from openpyxl.styles import Style, Alignment
cell = ws.cell('A1')
cell.style = cell.style.copy(alignment=Alignment(horizontal='center'))
вышеуказанное копирует текущий стиль и заменяет выравнивание. Вы также можете создать совершенно новый стиль - с любыми значениями, не указанными, принимая значения по умолчанию изhttps://openpyxl.readthedocs.org/en/latest/styles.html
cell.style = Style(alignment=Alignment(horizontal='center'),font=Font(bold=True))
# or - a tidier way
vals = {'alignment':Alignment(horizontal='center'),
'font':Font(bold=True),
}
new_style = Style(**vals)
cell.style = new_style