למה לבנות תרשימים באופן תכנותי?

צינורות דיווח אוטומטיים לעיתים קרובות זקוקים לתרשימים משולבים בחוברות Excel, כגון סיכומי רבעון, לוחות מחוונים של תוצאות למידת מכונה, או מדדי תפעול. ביצוע זאת ללא Microsoft Excel משמעותו ללא עלות רישוי וללא אינטראקציית GUI.

Aspose.Cells FOSS for Python מספק API גרפים נקי ופייתוני: שיטה אחת לכל סוג גרף, מחרוזת פשוטה לכותרת, וקונפיגורציית סדרות מבוססת ארגומנטים בשם. ה‑API המלא מתואר להלן.


התקנה

pip install aspose-cells-foss

ייבא את המחלקות שאתה צריך:

from aspose.cells_foss import Workbook, Cell

ניתן לגשת לגרפים דרך ws.charts; אין צורך בייבוא מודול גרפים נפרד.


מבט כולל על API התרשימים

מה שאתה רוצהאיך לעשות זאת
הוסף גרף עמודותws.charts.add_bar(top_row, left_col, bottom_row, right_col)
הוסף גרף קוws.charts.add_line(top_row, left_col, bottom_row, right_col)
הוסף גרף פסיםws.charts.add_bar(top_row, left_col, bottom_row, right_col)
הוסף גרף עוגהws.charts.add_pie(top_row, left_col, bottom_row, right_col)
הגדר את הכותרתchart.title = "My Chart" (מחרוזת פשוטה; לא .title.text)
הגדר קטגוריות ציר Xchart.category_data = "A2:A6"
הוסף סדרה בשםchart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue")
הצג מקראchart.show_legend = True
הגדר מיקום מקראchart.legend_position = "bottom"

כל האינדקסים של שורות ועמודות הם מתחיל מאפס. ה add_* המתודות מחזירות את Chart אובייקט ישירות (לא אינדקס).


תרשים עמודות: שלב אחרי שלב

בואו נבנה תרשים עמודות המציג הכנסות והוצאות רבעוניות.

שלב 1: צור את חוברת העבודה וכתוב נתונים

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

שלב 2: הוסף את התרשים

מקם את התרשים מתחת לנתונים (שורה 7 והלאה, משתרע על העמודות 0-8):

chart = ws.charts.add_bar(6, 0, 22, 8)

שלב 3: הגדר כותרת ומקרא

chart.title = "Quarterly Revenue vs Expenses"
chart.show_legend = True
chart.legend_position = "bottom"

שלב 4: הוסף סדרת נתונים

כל סדרה דורשת טווח ערכים, טווח קטגוריות, ושם:

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")

שלב 5: שמור

wb.save("quarterly_report.xlsx")
print("Chart saved to quarterly_report.xlsx")

דוגמה מלאה בחלק אחד:

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")

תרשים קו: מגמה חודשית

הדפוס הזה עובד עבור 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")

תרשים עוגה: נתח שוק

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")

טעויות נפוצות להימנע מהן

שגוינכון
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) (מקומי)chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
from aspose.cells.charts import ChartTypeלא נדרש; השתמש ב ws.charts.add_bar() בישירות
chart.n_series.category_data = "A2:A5"chart.category_data = "A2:A5" (רמת גרף)

משאבים