Pourquoi créer des graphiques de façon programmatique ?
Les pipelines de reporting automatisés ont souvent besoin de graphiques intégrés dans des classeurs Excel, comme des résumés trimestriels, des tableaux de bord de résultats d’IA, ou des indicateurs opérationnels. Le faire sans Microsoft Excel signifie aucun coût de licence et aucune interaction avec une interface graphique.
Aspose.Cells FOSS for Python fournit une API de graphiques propre et Pythonique : une méthode par type de graphique, une chaîne de caractères simple pour le titre, et une configuration de séries basée sur des arguments nommés. L’API complète est présentée ci‑dessous.
Installation
pip install aspose-cells-foss
Importez les classes dont vous avez besoin :
from aspose.cells_foss import Workbook, Cell
Les graphiques sont accessibles via ws.charts; aucune importation de module de graphique séparée n’est requise.
L’API de graphiques en un coup d’œil
| Ce que vous voulez | Comment le faire |
|---|---|
| Ajouter un graphique en colonnes | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Ajouter un graphique en lignes | ws.charts.add_line(top_row, left_col, bottom_row, right_col) |
| Ajouter un graphique à barres | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Ajouter un graphique circulaire | ws.charts.add_pie(top_row, left_col, bottom_row, right_col) |
| Définir le titre | chart.title = "My Chart" (chaîne simple ; pas .title.text) |
| Définir les catégories de l’axe des x | chart.category_data = "A2:A6" |
| Ajouter une série nommée | chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue") |
| Afficher la légende | chart.show_legend = True |
| Définir la position de la légende | chart.legend_position = "bottom" |
Tous les indices de lignes et de colonnes sont à base zéro. Le add_* les méthodes renvoient le Chart objet directement (pas un indice).
Graphique en colonnes : étape par étape
Construisons un graphique en colonnes affichant les revenus et dépenses trimestriels.
Étape 1 : créez le classeur et écrivez les données
from aspose.cells_foss import Workbook, Cell
wb = Workbook()
ws = wb.worksheets[0]
ws.name = "Q1-Q4 Report"
##Headers
ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "Revenue"
ws.cells["C1"].value = "Expenses"
##Data
quarters = ["Q1", "Q2", "Q3", "Q4"]
revenue = [50000, 62000, 71000, 89000]
expenses = [32000, 38000, 41000, 47000]
for i, (q, r, e) in enumerate(zip(quarters, revenue, expenses), start=2):
ws.cells[f"A{i}"].value = q
ws.cells[f"B{i}"].value = r
ws.cells[f"C{i}"].value = e
Étape 2 : ajoutez le graphique
Placez le graphique sous les données (ligne 7 et suivantes, couvrant les colonnes 0‑8) :
chart = ws.charts.add_bar(6, 0, 22, 8)
Étape 3 : configurez le titre et la légende
chart.title = "Quarterly Revenue vs Expenses"
chart.show_legend = True
chart.legend_position = "bottom"
Étape 4 : Ajouter des séries de données
Chaque série nécessite une plage de valeurs, une plage de catégories et un nom :
chart.category_data = "A2:A5"
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
chart.n_series.add("C2:C5", category_data="A2:A5", name="Expenses")
Étape 5 : Enregistrer
wb.save("quarterly_report.xlsx")
print("Chart saved to quarterly_report.xlsx")
Exemple complet en un seul bloc :
from aspose.cells_foss import Workbook, Cell
wb = Workbook()
ws = wb.worksheets[0]
ws.name = "Q1-Q4 Report"
##Data
ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "Revenue"
ws.cells["C1"].value = "Expenses"
data = [("Q1", 50000, 32000), ("Q2", 62000, 38000),
("Q3", 71000, 41000), ("Q4", 89000, 47000)]
for i, (q, r, e) in enumerate(data, start=2):
ws.cells[f"A{i}"].value = q
ws.cells[f"B{i}"].value = r
ws.cells[f"C{i}"].value = e
chart = ws.charts.add_bar(6, 0, 22, 8)
chart.title = "Quarterly Revenue vs Expenses"
chart.category_data = "A2:A5"
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
chart.n_series.add("C2:C5", category_data="A2:A5", name="Expenses")
chart.show_legend = True
chart.legend_position = "bottom"
wb.save("quarterly_report.xlsx")
Graphique en ligne : tendance mensuelle
Le même modèle fonctionne pour add_line():
from aspose.cells_foss import Workbook, Cell
wb = Workbook()
ws = wb.worksheets[0]
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
actuals = [42000, 47500, 53000, 49000, 61000, 68000]
targets = [45000, 45000, 50000, 55000, 60000, 65000]
ws.cells["A1"].value = "Month"
ws.cells["B1"].value = "Actual"
ws.cells["C1"].value = "Target"
for i, (m, a, t) in enumerate(zip(months, actuals, targets), start=2):
ws.cells[f"A{i}"].value = m
ws.cells[f"B{i}"].value = a
ws.cells[f"C{i}"].value = t
chart = ws.charts.add_line(8, 0, 24, 8)
chart.title = "Monthly Revenue: Actual vs Target"
chart.category_data = "A2:A7"
chart.n_series.add("B2:B7", category_data="A2:A7", name="Actual")
chart.n_series.add("C2:C7", category_data="A2:A7", name="Target")
chart.show_legend = True
chart.legend_position = "right"
wb.save("monthly_trend.xlsx")
Diagramme circulaire : part de marché
from aspose.cells_foss import Workbook, Cell
wb = Workbook()
ws = wb.worksheets[0]
segments = ["Product A", "Product B", "Product C", "Product D"]
shares = [40, 25, 20, 15]
ws.cells["A1"].value = "Segment"
ws.cells["B1"].value = "Share %"
for i, (s, v) in enumerate(zip(segments, shares), start=2):
ws.cells[f"A{i}"].value = s
ws.cells[f"B{i}"].value = v
chart = ws.charts.add_pie(6, 0, 20, 7)
chart.title = "Market Share by Product"
chart.category_data = "A2:A5"
chart.n_series.add("B2:B5", category_data="A2:A5", name="Share")
chart.show_legend = True
chart.legend_position = "right"
wb.save("market_share.xlsx")
Erreurs courantes à éviter
| Incorrect | Droite |
|---|---|
ws.charts.add(ChartType.COLUMN, 5, 0, 15, 5) | ws.charts.add_bar(5, 0, 15, 5) |
chart.title.text = "Revenue" | chart.title = "Revenue" |
chart.n_series.add("B2:B5", True) (positionnel) | chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue") |
from aspose.cells.charts import ChartType | Non nécessaire ; utilisez ws.charts.add_bar() directement |
chart.n_series.category_data = "A2:A5" | chart.category_data = "A2:A5" (niveau du graphique) |
Ressources
- Aspose.Cells FOSS for Python: Installation
- Guide du développeur : création de graphiques
- Référence API : ChartCollection, Chart, NSeries
- Base de connaissances : comment créer des graphiques dans Python
- Aperçu du produit: Résumé des fonctionnalités et des capacités
- Blog : Présentation de Aspose.Cells FOSS: Aperçu de la bibliothèque et démarrage rapide
- Dépôt GitHub