ویژگیها و عملکردها
ویژگیها و عملکردها
این صفحه قابلیتهای ایجاد نمودار را پوشش میدهد Aspose.Words FOSS برای .NET با مثالهای عملی C#، ساخته شده بر DocumentBuilder.InsertChart() و Chart مدل شیء. مدل شیء کامل اسناد کتابخانه (پاراگرافها، جداول، سبکها، نشانکها، بخشها) در نمای کلی محصول و در Quickstart راهنما.
ایجاد سند با یک نمودار
یک شکل نمودار را با DocumentBuilder.InsertChart() درج کنید، سپس از طریق Shape برگرداندهشده به شیء Chart آن دسترسی پیدا کنید. قبل از افزودن دادههای واقعی، سری پیشفرض تولید شده را پاک کنید:
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، یا ساخت از منبع، پیش از ارجاع به این APIها.
مسائل رایج
| مسئله | دلیل | رفع |
|---|---|---|
شمارههای صفحه یا ورودیهای فهرست مطالب 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
چرا شمارههای صفحه در فهرست مطالب من به صورت ۰ نمایش داده میشوند؟
این نسخهی FOSS شامل زیرسیستم چیدمان صفحه و رندرینگ نیست، بنابراین هر مقدار فیلدی که به چیدمان صفحه وابسته است — از جمله شمارههای صفحه — به جای مقدار محاسبهشده، به یک جایدار 0 ارزیابی میشود.
آیا میتوانم یک سند را به PDF یا یک قالب تصویر صادر کنم؟
در این نسخه امکانپذیر نیست. خروجی PDF، XPS و تصویر به همان زیرسیستم رندرینگ وابستهاند که برای رایگان نگه داشتن این نسخه حذف شد. برای آن خروجیها از Aspose.Words تجاری برای .NET استفاده کنید.
آیا میتوانم یک امضای دیجیتال جدید بر روی یک سند ایجاد کنم؟
خیر — این نسخه میتواند امضاهای دیجیتال موجود را تأیید کند اما نمیتواند امضاهای جدید ایجاد کند.
کدام انواع نمودار را InsertChart() پشتیبانی میکند؟
InsertChart() یک مقدار ChartType میگیرد — این enum شامل خانوادههای استاندارد نمودار مانند خط، ستون، میله، دایرهای، مساحت، دونات، رادار، پراکندگی، سهام و سطحی است و شامل انواع پشتهدار و سهبعدی آنها میشود.
خلاصه 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 | قالببندی متن و پر کردن (رنگ ثابت، گرادیان) در عناصر متنی نمودار |