Documentation Frappe Framework

Frappe Framework

Style de l’export Excel (XLSX)

XLSXStyleBuilder enregistre un style puis l’applique à une colonne, une ligne ou une cellule. Les index sont ceux de XlsxWriter, à partir de zéro.

2 min de lectureMis à jour le Source : docs.frappe.io

Rôle

Depuis la version 16, get_xlsx_styles dans le fichier Python du rapport définit le style Excel. Elle n’est appelée que pour l’export Excel d’un Script Report ou d’un Query Report standard, pas pour le CSV. Les deux types de rapports sont dans Script Report et Query Report.

Constructeur

python
from frappe.utils.xlsxutils import XLSXMetadata, XLSXStyleBuilder

def get_xlsx_styles(metadata: XLSXMetadata) -> dict:
    builder = XLSXStyleBuilder(metadata)
    return builder.result

En-tête, filtres, formats de type et devise sont appliqués à l’initialisation. XLSXStyleBuilder(metadata, default_styling=False) les coupe.

Métadonnées

Index à partir de 0, comme XlsxWriter.

AttributSens
report_nameNom du rapport
filtersValeurs brutes des filtres
column_mapIndex de colonne vers la définition
row_mapIndex de ligne vers les données, dict ou list
applied_filters_mapIndex de ligne de filtre vers [libellé, valeur]
has_total_rowLa dernière ligne est un total
has_indentationLe style d’indentation s’applique

register_style renvoie un identifiant, à réutiliser. style_column, style_row et style_cell l’appliquent. Propriétés publiées : bold, italic, underline, font_size, font_color, font_name, bg_color, border (1 fin, 2 moyen, 3 épais), border_color, left, right, top, bottom, align (left, center, right), valign (top, vcenter, bottom), text_wrap, indent, num_format. Le détail est dans la doc xlsxwriter.

Exemple

L’exemple aligne net_amount à droite via builder.field_index_map. Si has_total_row, la dernière ligne, get_last_row_index(), reçoit une bordure épaisse #15137e. Pour chaque ligne dont row_data est un dict, le statut Completed, Pending ou Cancelled colore la cellule status. Un net_amount supérieur à 10000 reçoit un surlignage gras. Les lignes qui ne sont pas des dict sont ignorées.

Point d’attention

Enregistrer chaque style une fois. Un index qui n’est pas dans field_index_map vaut None : l’exemple ne style alors pas la colonne.