परिचय
यह गाइड दिखाता है कि Aspose.Words FOSS के साथ .NET के लिए मूल Word चार्ट कैसे बनाएं — वही ड्रॉइंग ऑब्जेक्ट्स जो Word स्वयं Insert > Chart का उपयोग करने पर बनाता है — पूरी तरह कोड से। ऐसे जोड़े गए चार्ट एक चित्र नहीं है; यह दस्तावेज़ के OOXML पैकेज में एम्बेड किया गया Chart ऑब्जेक्ट है, जिसमें डेटा सीरीज़ मॉडल, एक्सिस, लेजेंड, और एक डेटा टेबल होता है जिसे फ़ाइल सहेजने के बाद भी Word खोल और संपादित कर सकता है। यह पोस्ट उस Chart API में गहरी डुबकी है: कैसे चार्ट बनाएं, सीरीज़ डेटा जोड़ें, और एक्सिस, लेजेंड, डेटा लेबल, तथा फॉर्मेटिंग ऑब्जेक्ट्स तक पहुंचें जो इसके रेंडरिंग को नियंत्रित करते हैं।
लाइब्रेरी MIT लाइसेंस वाली है और इसमें कोई नेटिव डिपेंडेंसी नहीं है। यह .NET Standard 2.0 को टारगेट करती है, इसलिए इस पोस्ट का कोड .NET Framework 4.6.2+ और .NET 6, 8, और 10 पर बिना बदलाव के चलता है। इसे NuGet के माध्यम से इंस्टॉल करें, या स्रोत से बनाएं — नीचे त्वरित प्रारंभ देखें। यहाँ दिखाया गया सब कुछ वही चार्ट इंजन है जो व्यावसायिक Aspose.Words द्वारा .NET के लिए उपयोग किया जाता है; इस संस्करण में पूर्ण चार्ट ऑब्जेक्ट मॉडल शामिल है लेकिन पेज लेआउट या रेंडरिंग नहीं है, इसलिए चार्ट की पेज पर स्थिति की गणना नहीं की जाती और दस्तावेज़ को PDF या इमेज में निर्यात नहीं किया जा सकता।
क्या शामिल है
चार्ट बनाना और डेटा सीरीज़ जोड़ना
DocumentBuilder.InsertChart(chartType, width, height) वर्तमान स्थिति पर एक चार्ट शेप डालता है और एक Shape लौटाता है; इसका Chart प्रॉपर्टी बाकी सब कुछ के लिए प्रवेश बिंदु है। एक नया डाला गया चार्ट पहले से ही एक डिफॉल्ट सीरीज़ रखता है, इसलिए अधिकांश कोड पहले इसे साफ़ करता है और अपना डेटा Chart.Series के माध्यम से जोड़ता है, जो एक 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 में कैटेगरी/वैल्यू जोड़े (ऊपर जैसा), X/Y वैल्यू जोड़े, डेटेड सीरीज़, और अतिरिक्त साइज वैल्यू वाले बबल सीरीज़ के लिए ओवरलोड होते हैं। व्यक्तिगत ChartSeries, Add(xValue), Add(xValue, yValue), और Add(xValue, yValue, bubbleSize) पर एकल पॉइंट्स जोड़ें, Insert एक दिए गए इंडेक्स पर पॉइंट रखता है, और Clear() / ClearValues() सीरीज़ डेटा हटाते हैं बिना जरूरी सीरीज़ ऑब्जेक्ट को हटाए।
चार्ट प्रकार और श्रृंखला प्रकार
ChartType — वह enum जो InsertChart को पास किया जाता है — लगभग 40 सदस्य रखता है जो मानक Word चार्ट परिवारों को कवर करते हैं: Line, Bar, Column, Pie, Doughnut, Radar, Scatter, Stock, Surface, Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall, और Funnel, साथ ही उनमें से कई के stacked, percent-stacked, और 3D वेरिएंट (Bar3D, ColumnStacked, Area3DPercentStacked, आदि)।
एक संबंधित लेकिन अलग enum, ChartSeriesType, ChartSeries.SeriesType और ChartSeriesGroup.SeriesType पर प्रकट होता है और चार्ट के बजाय व्यक्तिगत श्रृंखला या श्रृंखला समूह का प्रकार वर्णित करता है। इसमें ChartType के समान सदस्य होते हैं, साथ ही दो और — ParetoLine और RegionMap — जो ChartType सीधे उजागर नहीं करता। ChartSeriesGroup ही वह चीज़ है जो कॉम्बो चार्ट को संभव बनाती है: Chart.SeriesGroups (एक ChartSeriesGroupCollection) चार्ट में प्रत्येक श्रृंखला प्रकार के लिए एक समूह रखता है, और प्रत्येक समूह का अपना AxisX/AxisY जोड़ी और लेआउट गुण जैसे Overlap, GapWidth, BubbleScale, और DoughnutHoleSize होते हैं।
अक्ष, ग्रिडलाइन, और स्केलिंग
Chart.AxisX, AxisY, और AxisZ (साथ ही Axes संग्रह) ChartAxis ऑब्जेक्ट लौटाते हैं। प्रत्येक अक्ष में एक Type (ChartAxisType.Category, Series, या Value), टिक मार्क सेटिंग्स (MajorTickMark, MinorTickMark — Cross, Inside, Outside, या None), ग्रिडलाइन फ़्लैग (HasMajorGridlines, HasMinorGridlines), और यूनिट नियंत्रण (MajorUnit, MinorUnit, और उनके *IsAuto समतुल्य) होते हैं। ChartAxis.Scaling एक AxisScaling ऑब्जेक्ट लौटाता है जिसका Minimum और Maximum AxisBound मान हैं — AxisBound.IsAuto दर्शाता है कि बाउंड स्वचालित रूप से गणना किया गया है या नहीं, और पैरामीटरयुक्त कंस्ट्रक्टर्स (AxisBound(value), AxisBound(datetime)) स्पष्ट संख्यात्मक या तिथि बाउंड सेट करते हैं। एक श्रेणी अक्ष को ChartAxis.CategoryType के माध्यम से टेक्स्ट या समय श्रेणियों से पिन किया जा सकता है (AxisCategoryType.Automatic, Category, या Time), और ChartAxis.Title एक ChartAxisTitle को उजागर करता है जिसमें उसके अपने Text, Show, और Font होते हैं।
लेजेंड, डेटा टेबल, और चार्ट शीर्षक
Chart.Legend एक ChartLegend लौटाता है, जिसका Position (एक LegendPosition None, Bottom, Left, Right, Top, या TopRight का) निर्धारित करता है कि यह प्लॉट एरिया के सापेक्ष कहाँ रेंडर होता है; LegendEntries व्यक्तिगत ChartLegendEntry ऑब्जेक्ट्स का एक ChartLegendEntryCollection है, प्रत्येक के पास अपना Font और IsHidden फ़्लैग होता है जो लेजेंड से एकल श्रृंखला को छुपाता है बिना उसे चार्ट से हटाए। Chart.DataTable (एक ChartDataTable) तब चार्ट के नीचे ग्रिड के रूप में श्रृंखला मान प्रदर्शित करता है जब Show सेट हो, और HasLegendKeys, HasHorizontalBorder, HasVerticalBorder, तथा HasOutlineBorder उसकी उपस्थिति को नियंत्रित करते हैं। Chart.Title एक ChartTitle है जिसमें Text और Show प्रॉपर्टीज़ हैं, जो अक्ष शीर्षकों के समान पैटर्न का अनुसरण करता है।
डेटा लेबल, डेटा पॉइंट्स, और मार्कर
ChartSeries.HasDataLabels series के लिये डेटा लेबल चालू करता है, और ChartSeries.DataLabels (एक ChartDataLabelCollection) या उससे एक व्यक्तिगत ChartDataLabel यह नियंत्रित करता है कि प्रत्येक लेबल क्या दिखाए: ShowValue, ShowCategoryName, ShowSeriesName, ShowPercentage, ShowLegendKey, और ShowBubbleSize स्वतंत्र फ़्लैग हैं, और Position (ChartDataLabelPosition.Center, InsideEnd, OutsideEnd, BestFit, और अन्य) लेबल को उसके बिंदु के सापेक्ष स्थित करता है। ChartSeries.DataPoints ChartDataPoint के माध्यम से प्रति-बिंदु पहुँच प्रदान करता है, जिसमें उसका अपना Marker (एक ChartMarker जिसमें Symbol MarkerSymbol enum से और एक Size) है, Explosion (पाई स्लाइस निकालने के लिए), और Format। हर चार्ट तत्व जो भरा या रूपरेखा किया जा सकता है — series, data points, legend, title, data table — अपने Format प्रॉपर्टी के माध्यम से एक ChartFormat उजागर करता है, जिसमें Fill, Stroke, और ShapeType (ChartShapeType) प्रॉपर्टी और इसे रीसेट करने के लिये एक SetDefaultFill() मेथड शामिल है। एक बात जानना योग्य है: ChartFormat पर थीम-लिंक्ड फ़िल और स्ट्रोक रंग के वैरिएंट (FillableForeThemeColor, FillableBackThemeColor, StrokeForeThemeColor, StrokeBackThemeColor, और उनके टिंट/शेड समकक्ष) इस संस्करण में लागू नहीं हैं — थीम-कलर रेफ़रेंसेज़ के बजाय साधारण Fill/Stroke रंग सेट करें। Chart.Style (एक ChartStyle जैसे Muted, Saturated, Gradient, Outline, या Black) पूरे चार्ट पर एक ही कदम में पूर्वनिर्धारित लुक लागू करता है।
त्वरित प्रारंभ
Aspose.Words FOSS .NET के लिए NuGet के माध्यम से उपलब्ध है:
dotnet add package Aspose.Words.FOSSवैकल्पिक रूप से स्रोत से बनाएं:
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
फिर अपने एप्लिकेशन से Aspose.Words.csproj के लिए एक प्रोजेक्ट रेफ़रेंस जोड़ें। रेफ़रेंस जोड़ने पर, यह एक श्रृंखला वाला लाइन चार्ट बनाता है और इसे DOCX में सहेजता है:
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");
Word में chart.docx खोलें और चार्ट पूरी तरह से संपादन योग्य है — उस पर राइट-क्लिक करें और “Edit Data” चुनें ताकि ऊपर लिखे गए वही तीन श्रेणियाँ और मान देख सकें।
समर्थित फ़ॉर्मेट
| फ़ॉर्मेट | विस्तार | पढ़ें | लिखें |
|---|---|---|---|
| DOCX | .docx | ✓ | ✓ |
| DOCM | .docm | ✓ | ✓ |
| DOTX | .dotx | ✓ | ✓ |
| DOTM | .dotm | ✓ | ✓ |
| फ़्लैट OPC (सभी संस्करण) | (विभिन्न) | ✓ | ✓ |
| Markdown | .md | ✓ | ✓ |
| Text | .txt | ✓ | ✓ |
Chart API के साथ बनाए गए चार्ट OOXML ड्रॉइंग ऑब्जेक्ट होते हैं, इसलिए वे ऊपर दिए गए DOCX-परिवार फ़ॉर्मैट्स (DOCX, DOCM, DOTX, DOTM, और Flat OPC) में राउंड-ट्रिप होते हैं। यह संस्करण PDF, XPS या इमेजेज़ में निर्यात नहीं कर सकता और प्रिंट नहीं कर सकता, इसलिए कोई भी चार्ट को बिटमैप में रेंडर नहीं करता — चार्ट Word फ़ाइल के भीतर एक जीवित, संपादन योग्य ऑब्जेक्ट बना रहता है। इस संस्करण से हटाए गए अतिरिक्त फ़ॉर्मैट कनवर्टर्स (DOC, RTF, ODT, HTML, EPUB, MHTML, MOBI, AZW3, और WordML) वही सबसिस्टम हैं जो लाइब्रेरी के अन्य हिस्सों में बाहर रखे गए हैं, चार्ट्स के लिये विशेष कुछ नहीं।
ओपन सोर्स & लाइसेंसिंग
Aspose.Words FOSS for .NET MIT लाइसेंस के तहत जारी किया गया है, व्यावसायिक और व्यक्तिगत उपयोग के लिए मुफ्त है, बिना रॉयल्टी या पुनर्वितरण प्रतिबंधों के। पूर्ण स्रोत, जिसमें इस पोस्ट में उल्लेखित चार्ट क्लासेज़ शामिल हैं, GitHub पर Aspose.Words FOSS for .NET रिपॉजिटरी में उपलब्ध है।