العمل مع المخططات
العمل مع المخططات
Aspose.Words FOSS لـ .NET يمكنه إدراج مخططات Word الأصلية — نفس المخططات DrawingML التي ينشئها Word نفسه — كشكل في طبقة الرسم. DocumentBuilder.InsertChart ينشئ الشكل ويعيده؛ خاصية Chart للشكل تكشف عن السلاسل والمحاور والوسيلة التوضيحية والتنسيق. يغطي هذا الدليل إنشاء مخطط، اختيار نوع المخطط، العمل مع السلاسل ونقاط البيانات، المحاور وخطوط الشبكة، وتنسيق عناصر المخطط.
إنشاء مخطط
استدعِ DocumentBuilder.InsertChart(chartType, width, height) لإدراج شكل مخطط عند المؤشر والحصول على Shape الحاوية. خاصية Chart الخاصة به هي كائن Chart الذي تقوم بتكوينه. يأتي المخطط المُدرج حديثًا مع سلاسل تجريبية placeholder، لذا قم بمسح Chart.Series قبل إضافة بيانات حقيقية باستخدام ChartSeriesCollection.Add(seriesName, categories, values):
using Aspose.Words;
using Aspose.Words.Drawing.Charts;
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
// Delete default generated series.
chart.Series.Clear();
string[] categories = new string[] { "AW Category 1", "AW Category 2", "AW Category 3" };
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
doc.Save("chart.docx");يبني هذا المثال Document، يستخدم DocumentBuilder.InsertChart(ChartType.Line, 432, 252) لإدراج شكل مخطط خطي، يقرأ shape.Chart للحصول على كائن Chart، يستدعي chart.Series.Clear() لإزالة سلسلة placeholder، يضيف سلسلة حقيقية واحدة باستخدام chart.Series.Add(seriesName, categories, values)، ويكتب النتيجة باستخدام Document.Save.
أنواع المخططات
ChartType يغطي عائلات المخططات القياسية في Word — Line، Bar، Column (بالإضافة إلى متغيرات Stacked، PercentStacked، و3D)، Pie، PieOfPie، Doughnut، Area، Scatter، Bubble، Radar، Stock، Surface، وأنواع المخططات الأحدث في Word 2016 Treemap، Sunburst، Histogram، Pareto، BoxAndWhisker، وWaterfall. مرّر القيمة المطلوبة كمعامل chartType إلى InsertChart؛ لا توجد طريقة لتغيير نوع مخطط موجود بعد الإدراج سوى استبدال الشكل.
السلاسل ونقاط البيانات
Chart.Series هو ChartSeriesCollection من كائنات ChartSeries. بخلاف التحميل الزائد Add(seriesName, categories, values) المستخدم أعلاه، فإن ChartSeriesCollection يحتوي أيضًا على تحميلات زائدة لأزواج قيم X/Y، والتواريخ، وأحجام الفقاعات، بالإضافة إلى Insert، Remove(index)، وClear(). كل ChartSeries يكشف عن DataPoints (وهو ChartDataPointCollection) لتنسيق كل نقطة — Format، Marker، Explosion، وInvertIfNegative — وHasDataLabels / DataLabels لتفعيل وتكوين ChartDataLabelCollection (ShowValue، ShowCategoryName، ShowPercentage، Position).
المحاور وخطوط الشبكة
Chart.AxisX، AxisY، وAxisZ هي كائنات ChartAxis (مع Chart.Axes كـ ChartAxisCollection لتكرار جميعها). كل محور يحتوي على HasMajorGridlines / HasMinorGridlines، MajorUnit / MinorUnit (مع أعلام *IsAuto المطابقة)، Crosses / CrossesAt، CategoryType، وTickLabels كائن (AxisTickLabels) لخط التسمية والاتجاه. ChartAxis.Title (ChartAxisTitle) يحدد نص تسمية المحور عبر خصائصه Text وShow.
وسيلة الإيضاح، العنوان، وجدول البيانات
Chart.Title (ChartTitle) يحدد التسمية العامة للمخطط — Text، Show، وFont. Chart.Legend (ChartLegend) يتحكم فيما إذا كانت وسيلة الإيضاح تظهر وأين تظهر عبر Position (قيمة LegendPosition مثل Bottom، Right، أو Top) ويكشف عن LegendEntries الفردية. Chart.DataTable (ChartDataTable) يمكنه عرض قيم السلاسل الأساسية كجدول أسفل منطقة الرسم، مع Show، HasLegendKeys، ومفاتيح التبديل للحدود.
تنسيق عناصر المخطط
معظم عناصر المخطط — السلاسل، نقاط البيانات، المحاور، العنوان، ووسيلة الإيضاح — تكشف عن خاصية Format من النوع ChartFormat، والتي بدورها تكشف عن Fill وStroke لألوان ذلك العنصر، بالإضافة إلى ShapeType (ChartShapeType) لأشكال علامات نقاط البيانات. ChartFormat.SetDefaultFill() يعيد العنصر إلى مظهره الافتراضي المستند إلى السمة.
نصائح وأفضل الممارسات
- دائمًا قم بمسح أو استبدال سلسلة العنصر النائب (
chart.Series.Clear()) قبل إضافة البيانات الحقيقية — يتم إدراج مخطط جديد مع بيانات نموذجية مضمَّنة بالفعل. - استخدم التحميلات
ChartSeriesCollection.Addالتي تتطابق مع شكل بياناتك (الفئات، أزواج X/Y، التواريخ، أو أحجام الفقاعات) بدلاً من إجبار كل شيء عبر أزواج الفئة/القيمة. - قم بتعيين
HasDataLabels = trueعلى السلسلة قبل تكوين مجموعةDataLabelsالخاصة بها — لا تؤثر خصائص عرض المجموعة بشكل مرئي أثناء إيقاف تشغيل التسميات. - اقرأ
Chart.ChartSpaceأو تحقق منChartTypeالمحدد قبل الاعتماد على سلوك خطوط الشبكة أو المحور الذي يختلف بين المخططات الكلاسيكية ومخططات نمط Word-2016. - يفضَّل استخدام
ChartFormat.SetDefaultFill()على مسح كل خاصية تعبئة يدويًا عندما تريد إعادة ضبط مظهر العنصر.
مشكلات شائعة
| المشكلة | السبب | الإصلاح |
|---|---|---|
| المخطط الجديد يعرض بيانات تجريبية غير متوقعة | InsertChart يملأ المخطط بسلسلة مؤقتة | استدعِ chart.Series.Clear() قبل إضافة السلسلة الخاصة بك |
| لا تظهر تسميات البيانات | HasDataLabels لم يتم تعيينه على السلسلة قبل تكوين DataLabels | قم بتعيين series.HasDataLabels = true، ثم قم بتكوين ShowValue/ShowCategoryName على series.DataLabels |
| خطوط الشبكة لا تظهر على محور القيم | يكون HasMajorGridlines/HasMinorGridlines افتراضيًا على false لهذا المحور | اضبط chart.AxisY.HasMajorGridlines = true (و HasMinorGridlines إذا لزم الأمر) |
| لا تظهر وسيلة الإيضاح | تم تعيين Chart.Legend.Position إلى LegendPosition.None | قم بتعيين Position إلى Bottom أو Right أو Top أو Left أو TopRight |
FAQ
كيف يمكنني إدراج مخطط في مستند؟
استدعِ DocumentBuilder.InsertChart(chartType, width, height). تُعيد العنصر Shape الحاوي؛ اقرأ خاصية Chart الخاصة به لتكوين المخطط.
كيف يمكنني إضافة بيانات إلى مخطط؟
امسح سلسلة العناصر النائبة باستخدام chart.Series.Clear()، ثم استدعِ chart.Series.Add(seriesName, categories, values) (أو إحدى الإصدارات المتعددة لـ Add للبيانات X/Y أو التاريخ أو الفقاعية).
ما هي أنواع المخططات المتاحة؟
ChartType تشمل العائلات الكلاسيكية (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface، بالإضافة إلى إصداراتها المكدسة وثلاثية الأبعاد) وأنواع مخططات Word 2016 (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
كيف يمكنني تغيير موضع ظهور وسيلة الإيضاح؟
عيّن Chart.Legend.Position إلى قيمة LegendPosition، مثل LegendPosition.Bottom أو LegendPosition.Right.
هل يمكنني تنسيق نقطة بيانات فردية بشكل مختلف عن باقي السلسلة؟
نعم — افهرس إلى ChartSeries.DataPoints (a ChartDataPointCollection) واضبط Format أو Marker أو Explosion الخاصة بـ ChartDataPoint بشكل مستقل عن تنسيق المستوى السلسلي.
API Reference ملخص
| فئة/طريقة | وصف |
|---|---|
DocumentBuilder.InsertChart | يدرج شكل مخطط عند المؤشر ويعيده. |
Chart | كائن تكوين المخطط، الذي يتم الوصول إليه عبر Shape.Chart. |
ChartType | تعداد لأنواع المخططات المتاحة (خط، شريط، دائري، وأنواع مخططات Word-2016). |
ChartSeriesCollection / ChartSeries | سلسلة بيانات المخطط والطرق لإضافة أو إدراج أو إزالةها. |
ChartDataPointCollection / ChartDataPoint | تنسيق لكل نقطة داخل السلسلة. |
ChartDataLabelCollection / ChartDataLabel | تسميات القيمة/الفئة المعروضة على نقاط المخطط. |
ChartAxis / ChartAxisCollection | تكوين المحور — خطوط الشبكة، الوحدات، نقطة التقاطع، تسميات العلامات. |
ChartLegend / LegendPosition | إظهار وسيلة الإيضاح وموقعها. |
ChartTitle | التسمية العامة للمخطط. |
ChartDataTable | جدول اختياري لقيم السلاسل يظهر أسفل منطقة الرسم. |
ChartFormat | تنسيق Fill و stroke و shape المشترك لمعظم عناصر المخطط. |