لماذا تُنشئ المخططات برمجيًا؟?
غالبًا ما تحتاج خطوط أنابيب التقارير الآلية إلى مخططات مدمجة في دفاتر 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" (مستوى المخطط) |
الموارد
- Aspose.Cells FOSS for Python: Installation
- دليل المطور: إنشاء المخططات
- مرجع API: ChartCollection, Chart, NSeries
- قاعدة المعرفة: كيفية إنشاء المخططات في Python
- نظرة عامة على المنتج: ملخص الميزات والقدرات
- مدونة: تقديم Aspose.Cells FOSS: نظرة عامة على المكتبة والبدء السريع
- مستودع GitHub