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.
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
from frappe.utils.xlsxutils import XLSXMetadata, XLSXStyleBuilder
def get_xlsx_styles(metadata: XLSXMetadata) -> dict:
builder = XLSXStyleBuilder(metadata)
return builder.resultEn-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.
| Attribut | Sens |
|---|---|
| report_name | Nom du rapport |
| filters | Valeurs brutes des filtres |
| column_map | Index de colonne vers la définition |
| row_map | Index de ligne vers les données, dict ou list |
| applied_filters_map | Index de ligne de filtre vers [libellé, valeur] |
| has_total_row | La dernière ligne est un total |
| has_indentation | Le 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.
