Bonjour,
Dans un traitement Python de données, je dois restituer les données dans une feuille excel.
Pour cela j'utilise le package openpyxl.
J'ai créé un tableau et y ai chargé les données depuis un Dataframe pandas.
Les colonnes contenant des dates sont au format Datetime dans le Dataframe.
Dans le tableau Excel, je souhaite avoir uniquement les dates en format "Date Courte".
J'ai trouvé pour formater une cellule, mais j'aimerai pouvoir formater un ensemble de colonnes ("J" à "AP") et là cela coince, j'ai besoin d'aide.
Merci pour votre aide.
Le code relatif à l'écriture dans un fichier Excel :
from openpyxl import Workbook
from openpyxl.worksheet.table import Table, TableStyleInfo
from openpyxl.utils import get_column_letter
from openpyxl.utils.dataframe import dataframe_to_rows
from openpyxl.worksheet.dimensions import ColumnDimension, DimensionHolder
from openpyxl.styles import numbers
wb = Workbook()
ws = wb.active # Prendre la feuille Active
ws.title = "Table LTP" # définir le nom de la feuille
for r in dataframe_to_rows(LTP, index=False, header=True):
ws.append(r)
NomTableau = "DonnéesLTP"
RefTableau = 'A1:%s%d' % (get_column_letter(len(LTP.columns)), len(LTP.index) + 1) # Ajouter 1 pour le nombre de lignes car inclu la ligne d'Entête
StyleTableau = TableStyleInfo(name="TableStyleMedium15", showFirstColumn=False,
showLastColumn=False, showRowStripes=True, showColumnStripes=False)
Tableau = Table(displayName=NomTableau, ref=RefTableau)
Tableau.tableStyleInfo = StyleTableau
ws.add_table(Tableau)
# Dimensionnment des Colonnes
for col in range(ws.min_column, ws.max_column + 1):
ws.column_dimensions[get_column_letter(col)].width = 12
ws.column_dimensions["B"].width = 50
ws.column_dimensions["C"].width = 50
ws.column_dimensions["D"].width = 25
ws.column_dimensions["E"].width = 15
ws.column_dimensions["G"].width = 25
ws.column_dimensions["H"].width = 20
# Formatage des colonnes Date
# Sur une cellule pas de problème pour "2013-04-01 0:00:00" dans le Dataframe j'obtiens bien "1/4/13" dans le tableau Excel
ws["J7"].number_format = numbers.FORMAT_DATE_DMYSLASH
# Sur une colonne ça coince
ws["J"].number_format = numbers.FORMAT_DATE_DMYSLASH # Problème ????
# Et je souaite formater les colonne de "J" à "AP"
ws["J:AP"].number_format = numbers.FORMAT_DATE_DMYSLASH # Problème ????
Partager