الميزات والوظائف
الميزات والوظائف
تغطي هذه الصفحة قدرات إنشاء المخططات لـ Aspose.Words FOSS لـ .NET مع أمثلة C# عملية، مُبنية حول DocumentBuilder.InsertChart() و Chart نموذج الكائن. يُوصف نموذج الكائن الكامل للمستند في المكتبة (paragraphs, tables, styles, bookmarks, sections) في نظرة المنتج وفي Quickstart الدليل.
إنشاء مستند مع مخطط
أدخل شكل مخطط باستخدام DocumentBuilder.InsertChart()، ثم الوصول إلى كائن Chart الخاص به عبر Shape المُرجَع. امسح السلسلة المُولَّدة افتراضيًا قبل إضافة البيانات الحقيقية:
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");سلسلة المخطط، نقاط البيانات، والعلامات
Chart.Series هو ChartSeriesCollection. كل ChartSeries يكشف عن نقاط البيانات الفردية الخاصة به عبر DataPoints، مما يتيح لك تخصيص علامة أو تنسيق نقطة واحدة دون التأثير على باقي السلسلة:
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
chart.Series.Clear();
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
ChartSeries series = chart.Series[0];
ChartDataPointCollection points = series.DataPoints;
ChartDataPoint point1 = points[0];
ChartDataPoint point2 = points[1];
point1.InvertIfNegative = true;
point1.Marker.Symbol = MarkerSymbol.Square;
point2.InvertIfNegative = true;
point2.Marker.Symbol = MarkerSymbol.Diamond;
// Reset a single data point back to the series' inherited default formatting.
point1.ClearFormat();تسميات بيانات المخطط
ChartSeries.DataLabels هو ChartDataLabelCollection يتحكم في التسميات لكل نقطة في السلسلة دفعة واحدة. استخدم DataLabels[i] للوصول إليه لتجاوز ChartDataLabel فردي:
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
chart.Series.Clear();
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
ChartSeries series = chart.Series[0];
series.HasDataLabels = true;
series.DataLabels.ShowValue = true;
ChartDataLabel label = series.DataLabels[1];
label.ShowCategoryName = true;
label.Position = ChartDataLabelPosition.Below;عناوين محاور المخطط
Chart.AxisX و Chart.AxisY كل منهما يُظهر ChartAxisTitle من خلال خاصية Title:
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Column, 432, 252);
Chart chart = shape.Chart;
ChartAxisTitle xTitle = chart.AxisX.Title;
ChartAxisTitle yTitle = chart.AxisY.Title;
xTitle.Show = true;
xTitle.Text = "Categories";
yTitle.Show = true;
yTitle.Text = "Values";وسيلة إيضاح المخطط والخطوط
Chart.Legend يُظهر LegendEntries، واحد ChartLegendEntry لكل سلسلة، كل منها لديه Font الخاص به. Font ينفذ تنسيق التعبئة، لذا Font.Fill.Solid() يحدد لون نص صلب بنفس الطريقة التي يفعلها على أي مقطع منسق آخر:
using System.Drawing;
Shape shape = builder.InsertChart(ChartType.Column, 432, 252);
ChartLegend legend = shape.Chart.Legend;
Font font1 = legend.LegendEntries[0].Font;
Font font2 = legend.LegendEntries[1].Font;
font1.Fill.Solid(Color.Blue);
font2.Color = Color.Green;جدول بيانات المخطط
Chart.DataTable هو ChartDataTable يعرض قيم السلسلة الأساسية أسفل المخطط. خصائص Has*Border و HasLegendKeys تتحكم في أي الأجزاء تكون مرئية:
Shape shape = builder.InsertChart(ChartType.Column, 432, 252);
ChartDataTable dataTable = shape.Chart.DataTable;
dataTable.HasLegendKeys = false;
dataTable.HasHorizontalBorder = true;
dataTable.HasVerticalBorder = true;
dataTable.HasOutlineBorder = false;
doc.Save("chart-report.docx");نصائح وأفضل الممارسات
DocumentBuilder.InsertChart()يملأ المخطط الجديد بسلسلة مُولدة افتراضية — استدعِchart.Series.Clear()قبل إضافة بياناتك الخاصة، وإلا ستبقى القيم الافتراضية إلى جانبه.- استخدم
ChartSeries.DataLabels[i]لاستهداف تسمية بيانات واحدة عندما تحتاج فقط بضع نقاط إلى تنسيق مخصص؛ واستخدم خصائص مستوى المجموعة (DataLabels.ShowValueوما شابهها) لتعيين قيمة افتراضية لكل تسمية في السلسلة دفعة واحدة. ClearFormat()متاح على كل منChartDataPointوChartDataLabelCollection— يعيد تنسيقًا مباشرًا إلى ما يرثه التسلسل افتراضيًا.- محرك تقييم الحقول يحدّث حقول المحتوى مثل
DATEوDOCPROPERTYبرمجيًا، لكن الحقول التي تعتمد على تخطيط الصفحة (أرقام الصفحات في جدول المحتويات،NUMPAGES) تُقيم إلى قيم0كعناصر نائبة لأن هذه النسخة لا تشمل محرك التخطيط. - انظر دليل التثبيت لإضافة الحزمة عبر NuGet، أو بناءها من المصدر، قبل الإشارة إلى هذه APIs.
المشكلات الشائعة
| مشكلة | السبب | إصلاح |
|---|---|---|
أرقام الصفحات أو مدخلات جدول المحتويات تُظهر 0 | هذا الإصدار لا يتضمن محرك تخطيط الصفحة/العرض | السلوك المتوقع — قيم الحقول المعتمدة على التخطيط غير مُحتسبة؛ استخدم النسخة التجارية Aspose.Words لـ .NET إذا كنت تحتاجها |
Document.Save() إلى .pdf، .xps، أو فشل امتداد الصورة | تنسيقات العرض غير مدرجة في هذه النسخة | احفظ كـ DOCX، DOCM، DOTX، DOTM، Flat OPC، Markdown، أو نص عادي بدلاً من ذلك |
فشل تحميل ملف .doc أو .rtf أو .odt أو .html أو .epub | يتم دعم DOCX و DOCM و DOTX و DOTM و Flat OPC و Markdown والنص العادي فقط للتحميل/الحفظ | حوّل ملف المصدر إلى DOCX أولاً، أو استخدم النسخة التجارية |
| لا تزال سلسلة المخطط الافتراضية تظهر بعد إضافة البيانات المخصصة | لم يتم استدعاء chart.Series.Clear() بعد InsertChart() | امسح السلسلة المولدة افتراضيًا قبل استدعاء chart.Series.Add() |
FAQ
لماذا تظهر أرقام الصفحات في جدول المحتويات الخاصة بي كـ 0؟
هذا الإصدار مفتوح المصدر لا يتضمن نظام تخطيط الصفحات ومعالجتها، لذا أي قيمة حقل تعتمد على تخطيط الصفحة — بما في ذلك أرقام الصفحات — تُقيم إلى عنصر نائب 0 بدلاً من قيمة محسوبة.
هل يمكنني تصدير مستند إلى PDF أو تنسيق صورة؟
ليس في هذا الإصدار. يعتمد تصدير PDF وXPS والصور على نفس نظام المعالجة الذي تم إزالته للحفاظ على مجانية هذا الإصدار. استخدم Aspose.Words التجاري لـ .NET لتلك المخرجات.
هل يمكنني إنشاء توقيع رقمي جديد على مستند؟
لا — يمكن لهذا الإصدار التحقق من التواقيع الرقمية الموجودة لكنه لا يستطيع إنشاء توقيعات جديدة.
ما هي أنواع المخططات التي يدعمها InsertChart()؟
InsertChart() يأخذ قيمة ChartType — يغطي التعداد عائلات المخططات القياسية مثل الخط، العمود، الشريط، الدائرة، المنطقة، الحلقة، الرادار، التشتت، المخططات المالية، ومخططات السطح، بما في ذلك النسخ المكدسة وثلاثية الأبعاد.
API Reference ملخص
| فئة / خاصية | وصف |
|---|---|
Document | كائن المستند الجذري؛ Save() يكتب إلى DOCX أو Markdown أو نص عادي |
DocumentBuilder | المؤشر عالي المستوى API; InsertChart() يضيف شكل مخطط |
Shape | كائن الرسم الذي يُرجعه InsertChart(); يُظهر الخاصية Chart |
Chart | كائن المخطط؛ Series, Legend, DataTable, AxisX, AxisY, Title |
ChartSeries / ChartSeriesCollection | بيانات السلسلة (Add, Clear) وإعدادات كل سلسلة |
ChartDataPoint / ChartDataPointCollection | تنسيق كل نقطة; ClearFormat() |
ChartMarker / MarkerSymbol | شكل وحجم علامة نقطة البيانات |
ChartDataLabel / ChartDataLabelCollection | إعدادات عرض التسمية لكل تسمية وعلى مستوى المجموعة |
ChartAxisTitle | نص العنوان المعروض على Chart.AxisX / Chart.AxisY |
ChartLegend / ChartLegendEntry | وسيلة إيضاح المخطط وإدخالاتها لكل سلسلة |
ChartDataTable | جدول البيانات المعروض أسفل المخطط |
Font / Fill | تنسيق النص وتعبئة (لون صلب، تدرج) على عناصر نص المخطط |