لماذا تُنشئ المخططات برمجيًا؟?

غالبًا ما تحتاج خطوط أنابيب التقارير الآلية إلى مخططات مدمجة في دفاتر Excel، مثل الملخصات ربع السنوية، لوحات معلومات نتائج التعلم الآلي، أو مؤشرات الأداء التشغيلية. القيام بذلك دون Microsoft Excel يعني عدم وجود تكلفة ترخيص ولا تفاعل مع واجهة المستخدم الرسومية.

Aspose.Cells FOSS for Python يوفر واجهة برمجة تطبيقات مخططات نظيفة وبايثونية: طريقة واحدة لكل نوع مخطط، سلسلة نصية عادية للعنوان، وتكوين السلاسل القائم على وسائط الكلمات المفتاحية. تم تغطية واجهة البرمجة بالكامل أدناه.


التثبيت

pip install aspose-cells-foss

استورد الفئات التي تحتاجها:

from aspose.cells_foss import Workbook, Cell

يتم الوصول إلى المخططات عبر ws.charts; لا يلزم استيراد وحدة مخططات منفصلة.


نظرة سريعة على واجهة برمجة تطبيقات المخططات

ما الذي تريدهكيفية القيام بذلك
إضافة مخطط عمودي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)
تعيين فئات المحور السينيchart.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" (مستوى المخطط)

الموارد