J'essaie d'utiliser Openpyxl pour appliquer une bordure à une cellule, mais j'ai échoué à la tâche la plus élémentaire consistant à "appliquer tout type de bordure à une cellule quelconque". J'ai essayé de copier à partir de la documentation Openpyxl ( http://pythonhosted.org/openpyxl/styles.html#introduction ) le style par défaut et la modification, mais cela me donne
"TypeError: init () a un argument de mot clé inattendu 'exposant'"
J'ai essayé de copier directement à partir d'un autre exemple ici ( Appliquer des bordures à toutes les cellules d'une plage avec openpyxl ), mais cela me donne
AttributeError: l'objet type 'Border' n'a pas d'attribut 'BORDER_THIN'
(même après avoir corrigé les fautes de frappe et les erreurs d'importation insuffisantes).
Est-ce que quelqu'un sait comment appliquer des bordures avec Python 3.3 et OpenPyxl 2.0.4? Tout ce que je recherche, c'est un extrait de code qui, si je le copie-colle dans un script vierge, créera une bordure autour de n'importe quelle cellule d'un classeur.
Avec openpyxl version 2.2.5, cet extrait fonctionne pour moi:
from openpyxl.styles.borders import Border, Side
from openpyxl import Workbook
thin_border = Border(left=Side(style='thin'),
right=Side(style='thin'),
top=Side(style='thin'),
bottom=Side(style='thin'))
wb = Workbook()
ws = wb.get_active_sheet()
# property cell.border should be used instead of cell.style.border
ws.cell(row=3, column=2).border = thin_border
wb.save('border_test.xlsx')
Avec openpyxl version 2.0.4, cet extrait fonctionne pour moi:
from openpyxl.styles.borders import Border, Side
from openpyxl.styles import Style
from openpyxl import Workbook
thin_border = Border(left=Side(style='thin'),
right=Side(style='thin'),
top=Side(style='thin'),
bottom=Side(style='thin'))
my_style = Style(border=thin_border)
wb = Workbook()
ws = wb.get_active_sheet()
ws.cell(row=3, column=2).style = my_style
wb.save('border_test.xlsx')
Cette réponse fonctionne avec la version 2.4.8 La différence avec les deux réponses précédentes est que la propriété de Side est border_style, pas de style
from openpyxl.styles.borders import Border, Side, BORDER_THIN
thin_border = Border(
left=Side(border_style=BORDER_THIN, color='00000000'),
right=Side(border_style=BORDER_THIN, color='00000000'),
top=Side(border_style=BORDER_THIN, color='00000000'),
bottom=Side(border_style=BORDER_THIN, color='00000000')
)
ws.cell(row=3, column=2).border = thin_border
Utilisation de styles: https://openpyxl.readthedocs.io/en/2.5/styles.html