Giriş

Bu kılavuz, Aspose.Words FOSS kullanarak .NET için yerel Word grafiklerinin nasıl oluşturulacağını — Insert > Chart (Ekle > Grafik) kullandığınızda Word’ün kendisinin yarattığı aynı çizim nesneleri — tamamen kod ile gösterir. Bu şekilde eklenen bir grafik resim değildir; belge’nin OOXML paketine gömülü bir Chart nesnesidir ve veri serisi modeli, eksenler, bir lejand ve Word’ün dosya kaydedildikten sonra bile açıp düzenleyebileceği bir veri tablosu içerir. Bu gönderi, Chart API üzerine derin bir dalış sunar: bir grafik nasıl oluşturulur, seri verileri nasıl eklenir ve render edilmesini kontrol eden eksen, lejand, veri etiketi ve biçimlendirme nesnelerine nasıl ulaşılır.

Kütüphane MIT lisanslıdır ve yerel bağımlılıkları yoktur. .NET Standard 2.0 hedeflenmiştir, bu yüzden bu gönderideki kod .NET Framework 4.6.2+ ve .NET 6, 8 ve 10 üzerinde değişiklik yapılmadan çalışır. NuGet aracılığıyla kurun veya kaynağından derleyin — aşağıda Hızlı Başlangıç’a bakın. Burada gösterilen her şey, ticari Aspose.Words tarafından .NET için kullanılan aynı grafik motorudur; bu sürüm tam grafik nesne modelini içerir ancak sayfa düzeni veya renderlamayı içermez, bu yüzden bir grafiğin sayfadaki konumu hesaplanmaz ve belge PDF ya da görüntü olarak dışa aktarılamaz.


Neler Dahildir

Bir Grafik Oluşturma ve Veri Serisi Ekleme

DocumentBuilder.InsertChart(chartType, width, height), geçerli konuma bir grafik şekli ekler ve bir Shape döndürür; onun Chart özelliği diğer her şey için giriş noktasını oluşturur. Yeni eklenen bir grafiğin zaten varsayılan bir serisi vardır, bu yüzden çoğu kod önce bunu temizler ve kendi verisini Chart.Series aracılığıyla ekler, bu bir ChartSeriesCollection.

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 });

ChartSeriesCollection.Add, kategori/değer çiftleri (yukarıdaki gibi), X/Y değer çiftleri, tarihli seriler ve ekstra bir boyut değeri içeren balon serileri için aşırı yüklemelere sahiptir. Tek bir ChartSeries, Add(xValue), Add(xValue, yValue) ve Add(xValue, yValue, bubbleSize) tek noktalar ekler, Insert verilen bir indeksde bir nokta yerleştirir ve Clear() / ClearValues() serinin kendisini kaldırmadan seri verilerini siler.

Grafik Türleri ve Seriler Türleri

ChartTypeInsertChart‘e geçirilen enum — yaklaşık 40 üye içerir ve standart Word grafik ailelerini kapsar: Line, Bar, Column, Pie, Doughnut, Radar, Scatter, Stock, Surface, Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall ve Funnel, ayrıca bunların birçoğunun yığılmış, yüzde-yığılmış ve 3B varyantları (Bar3D, ColumnStacked, Area3DPercentStacked ve benzeri).

İlgili ama ayrı bir enum, ChartSeriesType, ChartSeries.SeriesType ve ChartSeriesGroup.SeriesType‘de görünür ve grafiğin tamamı yerine tek bir seri ya da seri grubu tipini tanımlar. ChartType ile aynı üyeleri taşır ve iki tane daha — ParetoLine ve RegionMap — ekler; bu ikisini ChartType doğrudan ortaya koymaz. ChartSeriesGroup, kombine grafiklerin mümkün olmasını sağlayan şeydir: Chart.SeriesGroups (bir ChartSeriesGroupCollection) grafikteki her seri tipi için bir grup tutar ve her grup kendi AxisX/AxisY çiftine ve Overlap, GapWidth, BubbleScale ve DoughnutHoleSize gibi düzen özelliklerine sahiptir.

Eksenler, Izgara Çizgileri ve Ölçekleme

Chart.AxisX, AxisY ve AxisZ (ayrıca Axes koleksiyonu) ChartAxis nesneleri döndürür. Her eksenin bir Type (ChartAxisType.Category, Series veya Value), işaretleme ayarları (MajorTickMark, MinorTickMarkCross, Inside, Outside veya None), ızgara çizgi bayrakları (HasMajorGridlines, HasMinorGridlines) ve birim kontrolü (MajorUnit, MinorUnit ve bunların *IsAuto karşılıkları) vardır. ChartAxis.Scaling, AxisScaling nesnesini döndürür; bu nesnenin Minimum ve Maximum AxisBound değerleridir — AxisBound.IsAuto, sınırın otomatik olarak hesaplanıp hesaplanmadığını bildirir ve parametreli yapıcılar (AxisBound(value), AxisBound(datetime)) açık bir sayısal veya tarih sınırı ayarlar. Bir kategori ekseni, ChartAxis.CategoryType (AxisCategoryType.Automatic, Category veya Time) aracılığıyla metin ya da zaman kategorilerine sabitlenebilir ve ChartAxis.Title, kendi Text, Show ve Font öğelerine sahip bir ChartAxisTitle ortaya koyar.

Lejant, Veri Tablosu ve Grafik Başlığı

Chart.Legend, bir ChartLegend döndürür; bu nesnenin Position (bir LegendPosition içinde None, Bottom, Left, Right, Top veya TopRight) plot alanına göre nerede çizileceğini kontrol eder; LegendEntries, bireysel ChartLegendEntry nesnelerinin bir ChartLegendEntryCollectionidir ve her biri tek bir seriyi lejanttan gizlemek için kendi Font ve IsHidden bayrağına sahiptir, ancak grafikten kaldırmaz. Chart.DataTable (bir ChartDataTable), Show ayarlandığında seri değerlerini grafiğin altında bir ızgara olarak çizer; görünümünü HasLegendKeys, HasHorizontalBorder, HasVerticalBorder ve HasOutlineBorder belirler. Chart.Title, eksen başlıklarıyla aynı modeli izleyen Text ve Show özelliklerine sahip bir ChartTitledir.

Veri Etiketleri, Veri Noktaları ve İşaretçiler

ChartSeries.HasDataLabels, bir seri için veri etiketlerini açar ve ChartSeries.DataLabels (bir ChartDataLabelCollection) ya da ondan bir tek ChartDataLabel, her bir etiketin ne gösterdiğini denetler: ShowValue, ShowCategoryName, ShowSeriesName, ShowPercentage, ShowLegendKey ve ShowBubbleSize bağımsız bayraklardır; Position (ChartDataLabelPosition.Center, InsideEnd, OutsideEnd, BestFit ve diğerleri) etiketi noktasına göre konumlandırır. ChartSeries.DataPoints, ChartDataPoint aracılığıyla nokta bazında erişim sağlar; bu da kendi Marker (bir ChartMarker, MarkerSymbol enum’undan Symbol ve bir Size içeren), Explosion (bir pasta dilimini çıkarmak için) ve Format öğelerini taşır. Doldurulabilir veya kenarlıklı olabilen her grafik öğesi — seriler, veri noktaları, lejand, başlık, veri tablosu — Format özelliği aracılığıyla bir ChartFormat sunar; Fill, Stroke ve ShapeType (ChartShapeType) özellikleri ve sıfırlamak için bir SetDefaultFill() yöntemi bulunur. Bilmeniz gereken bir uyarı: ChartFormat üzerindeki tema-bağlantılı dolgu ve çizgi rengi varyantları (FillableForeThemeColor, FillableBackThemeColor, StrokeForeThemeColor, StrokeBackThemeColor ve bunların ton/ gölge karşılıkları) bu sürümde uygulanmamıştır — tema-rengi referansları yerine düz Fill/Stroke renkleri ayarlayın. Chart.Style (bir ChartStyle örneğin Muted, Saturated, Gradient, Outline veya Black) tüm grafik üzerine tek adımda önceden tanımlı bir görünüm uygular.


Hızlı Başlangıç

Aspose.Words FOSS, .NET için NuGet aracılığıyla kullanılabilir:

dotnet add package Aspose.Words.FOSS

Bunun yerine kaynaktan derlemek için:

git clone https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git
cd Aspose.Words-FOSS-for-.NET
dotnet build Aspose.Words.sln -c Release

Ardından uygulamanızdan Aspose.Words.csproj için bir proje referansı ekleyin. Referans eklendikten sonra, bu bir seri içeren bir çizgi grafiği oluşturur ve DOCX olarak kaydeder:

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");
Console.WriteLine("Saved chart.docx");

chart.docx dosyasını Word’de açın; grafik tamamen düzenlenebilir — üzerine sağ tıklayın ve “Edit Data” (Verileri Düzenle) seçeneğini seçin; böylece yukarıda yazılan aynı üç kategori ve değerleri görebilirsiniz.


Desteklenen Formatlar

BiçimUzantıOkuYaz
DOCX.docx
DOCM.docm
DOTX.dotx
DOTM.dotm
Düz OPC (tüm varyantlar)(çeşitli)
Markdown.md
Text.txt

Chart API ile oluşturulan grafikler OOXML çizim nesneleridir, bu yüzden DOCX-family biçimleri (DOCX, DOCM, DOTX, DOTM ve Düz OPC) arasında sorunsuz geçiş yaparlar. Bu sürüm PDF, XPS veya görsellere dışa aktaramaz ve yazdırılamaz, bu yüzden hiçbir şey grafiği bitmap’e dönüştürmez — grafik, Word dosyasının içinde canlı, düzenlenebilir bir nesne olarak kalır. Bu sürümden kaldırılan ek format dönüştürücüleri (DOC, RTF, ODT, HTML, EPUB, MHTML, MOBI, AZW3 ve WordML) kitaplıktaki diğer yerlerde de dışarıda tutulan aynı alt sistemlerdir, grafiklere özgü bir şey değildir.


Açık Kaynak & Lisanslama

Aspose.Words FOSS for .NET MIT lisansı altında yayınlanmıştır, ticari ve kişisel kullanım için ücretsiz, telif ücreti veya yeniden dağıtım kısıtlaması yoktur. Bu gönderide referans verilen grafik sınıfları da dahil olmak üzere tam kaynak kodu GitHub üzerinde Aspose.Words FOSS for .NET deposunda mevcuttur.


Başlarken

İlgili Kaynaklar