J'essaie de changer l'alignement du texte au centre de 2 cellules fusionnées, j'ai trouvé des réponses qui ne fonctionnaient pas pour mon cas
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'
les deux n'ont pas fonctionné, y a-t-il d'autres façons de le faire?
oui, il existe un moyen de le faire avec openpyxl:
from openpyxl.styles import Alignment
currentCell = ws.cell('A1') #or currentCell = ws['A1']
currentCell.alignment = Alignment(horizontal='center')
j'espère que ceci vous aidera
C'est ce qui a finalement fonctionné pour moi avec la dernière version de 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
Aucune des autres solutions n'a fonctionné pour moi, car ma solution nécessite openpyxl, et au moins dans 2.1.5 cell.alignment ne peut pas être défini directement.
from openpyxl.styles import Style, Alignment
cell = ws.cell('A1')
cell.style = cell.style.copy(alignment=Alignment(horizontal='center'))
Ce qui précède copie le style actuel et remplace l'alignement. Vous pouvez également créer un tout nouveau style - avec toutes les valeurs non spécifiées prenant les valeurs par défaut de 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
Vous pouvez y parvenir en utilisant la bibliothèque 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()
Ici, j'ai fusionné les cellules A1, B1 et ajouté un paramètre de format de cellule qui inclut le paramètre d'alignement assigné comme centre.