ایجاد نمودارها با VSTO و Aspose.Slides برای .NET

مرور کلی

این مقاله نحوهٔ ایجاد و سفارشی‌سازی نمودارها در ارائه‌های Microsoft PowerPoint را به‌صورت برنامه‌نویسی با C# نشان می‌دهد. با استفاده از Aspose.Slides برای .NET می‌توانید تولید خودکار نمودارهای حرفه‌ای و مبتنی بر داده را بدون نیاز به Microsoft Office یا کتابخانه‌های Interop انجام دهید. این API مجموعه‌ای غنی از ویژگی‌ها برای ساخت نمودارهای ستونی، دایره‌ای، خطی و موارد دیگر فراهم می‌کند — همه با کنترل کامل بر ظاهر، داده و طرح‌بندی. چه در حال تولید گزارش‌ها، داشبوردها یا ارائه‌های تجاری باشید، Aspose.Slides به شما کمک می‌کند تا تجسم‌های با کیفیت بالا را مستقیماً از برنامه‌های .NET خود ارائه کنید.

مثال VSTO

این بخش نشان می‌دهد چگونه می‌توان یک نمودار را در یک ارائه Microsoft PowerPoint با VSTO (Visual Studio Tools for Office) ایجاد کرد. با VSTO می‌توانید برنامه‌نویسی کنید تا نمودارها را با ترکیب خودکار PowerPoint و Excel ایجاد و سفارشی کنید. مثال زیر نحوه افزودن یک نمودار ستونی خوشه‌ای 3 بعدی، پر کردن آن با داده‌های یک ورک‌شیت Excel، تنظیم قالب‌بندی و طرح‌بندی، و ذخیرهٔ ارائه نهایی را نشان می‌دهد — همه از داخل یک برنامهٔ .NET.

  1. یک نمونه از ارائه Microsoft PowerPoint ایجاد کنید.
  2. یک اسلاید خالی به ارائه اضافه کنید.
  3. یک نمودار ستونی خوشه‌ای 3 بعدی افزودن کنید و به آن دسترسی پیدا کنید.
  4. یک نمونه جدید از کتاب کار Microsoft Excel ایجاد کنید و داده‌های نمودار را بارگذاری کنید.
  5. با استفاده از نمونهٔ کتاب کار Excel به ورک‌شیت داده‌های نمودار دسترسی پیدا کنید.
  6. بازهٔ نمودار را در ورک‌شیت تنظیم کنید و سری‌های 2 و 3 را از نمودار حذف کنید.
  7. داده‌های دسته‌بندی نمودار را در ورک‌شیت داده‌های نمودار اصلاح کنید.
  8. داده‌های سری 1 را در ورک‌شیت داده‌های نمودار اصلاح کنید.
  9. به عنوان نمودار دسترسی پیدا کنید و ویژگی‌های مربوط به قلم را تنظیم کنید.
  10. به محور مقدار نمودار دسترسی پیدا کنید و واحد بزرگ، واحد کوچک، حداکثر مقدار و حداقل مقدار را تنظیم کنید.
  11. به محور عمق (سری) نمودار دسترسی پیدا کنید و آن را حذف کنید — فقط یک سری در این مثال استفاده می‌شود.
  12. زوایای چرخش نمودار را در جهت‌های X و Y تنظیم کنید.
  13. ارائه را ذخیره کنید.
  14. نمونه‌های Microsoft Excel و PowerPoint را ببندید.
EnsurePowerPointIsRunning(true, true);

// نمونه‌ای از یک شی اسلاید ایجاد کنید.
Microsoft.Office.Interop.PowerPoint.Slide objSlide = null;

// به اولین اسلاید ارائه دسترسی پیدا کنید.
objSlide = objPres.Slides[1];

// اولین اسلاید را انتخاب کنید و طرح‌بندی آن را تنظیم کنید.
objSlide.Select();
objSlide.Layout = Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutBlank;

// یک نمودار پیش‌فرض به اسلاید اضافه کنید.
objSlide.Shapes.AddChart(Microsoft.Office.Core.XlChartType.xl3DColumn, 20, 30, 400, 300);

// نمودار اضافه‌شده را دسترسی پیدا کنید.
Microsoft.Office.Interop.PowerPoint.Chart ppChart = objSlide.Shapes[1].Chart;

// داده‌های نمودار را دسترسی پیدا کنید.
Microsoft.Office.Interop.PowerPoint.ChartData chartData = ppChart.ChartData;

// یک نمونه از کتاب کار Excel ایجاد کنید تا با داده‌های نمودار کار کنید.
Microsoft.Office.Interop.Excel.Workbook dataWorkbook = (Microsoft.Office.Interop.Excel.Workbook)chartData.Workbook;

// به ورک‌شیت داده‌های نمودار دسترسی پیدا کنید.
Microsoft.Office.Interop.Excel.Worksheet dataSheet = dataWorkbook.Worksheets[1];

// بازه داده‌ها را برای نمودار تنظیم کنید.
Microsoft.Office.Interop.Excel.Range tRange = dataSheet.Cells.get_Range("A1", "B5");

// بازه مشخص‌شده را به جدول داده‌های نمودار اعمال کنید.
Microsoft.Office.Interop.Excel.ListObject tbl1 = dataSheet.ListObjects["Table1"];
tbl1.Resize(tRange);

// مقدارهای دسته‌ها و داده‌های سری‌های مربوطه را تنظیم کنید.
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A2"))).FormulaR1C1 = "Bikes";
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A3"))).FormulaR1C1 = "Accessories";
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A4"))).FormulaR1C1 = "Repairs";
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A5"))).FormulaR1C1 = "Clothing";
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("B2"))).FormulaR1C1 = "1000";
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("B3"))).FormulaR1C1 = "2500";
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("B4"))).FormulaR1C1 = "4000";
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("B5"))).FormulaR1C1 = "3000";

// عنوان نمودار را تنظیم کنید.
ppChart.ChartTitle.Font.Italic = true;
ppChart.ChartTitle.Text = "2007 Sales";
ppChart.ChartTitle.Font.Size = 18;
ppChart.ChartTitle.Font.Color = Color.Black.ToArgb();
ppChart.ChartTitle.Format.Line.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;
ppChart.ChartTitle.Format.Line.ForeColor.RGB = Color.Black.ToArgb();

// به محور مقدار نمودار دسترسی پیدا کنید.
Microsoft.Office.Interop.PowerPoint.Axis valaxis = ppChart.Axes(Microsoft.Office.Interop.PowerPoint.XlAxisType.xlValue, Microsoft.Office.Interop.PowerPoint.XlAxisGroup.xlPrimary);

// مقادیر واحدهای محور را تنظیم کنید.
valaxis.MajorUnit = 2000.0F;
valaxis.MinorUnit = 1000.0F;
valaxis.MinimumScale = 0.0F;
valaxis.MaximumScale = 4000.0F;

// به محور عمق (سری) نمودار دسترسی پیدا کنید.
Microsoft.Office.Interop.PowerPoint.Axis Depthaxis = ppChart.Axes(Microsoft.Office.Interop.PowerPoint.XlAxisType.xlSeriesAxis, Microsoft.Office.Interop.PowerPoint.XlAxisGroup.xlPrimary);
Depthaxis.Delete();

// چرخش نمودار را تنظیم کنید.
ppChart.Rotation = 20;   // مقدار Y
ppChart.Elevation = 15;  // مقدار X
ppChart.RightAngleAxes = false;

// کتاب‌کار و ارائه را ببندید.
objPres.SaveAs("VSTO_Sample_Chart.pptx", Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsDefault, MsoTriState.msoTrue);
dataWorkbook.Application.Quit();
objPres.Application.Quit();
public static void EnsurePowerPointIsRunning(bool blnAddPresentation)
{
    EnsurePowerPointIsRunning(blnAddPresentation, false);
}

public static void EnsurePowerPointIsRunning()
{
    EnsurePowerPointIsRunning(false, false);
}

public static void EnsurePowerPointIsRunning(bool blnAddPresentation, bool blnAddSlide)
{
    string strName = null;

    // سعی کنید به ویژگی Name دسترسی پیدا کنید. اگر استثنایی رخ داد، یک نمونه جدید از PowerPoint را راه‌اندازی کنید.
    try
    {
        strName = objPPT.Name;
    }
    catch (Exception ex)
    {
        StartPowerPoint();
    }

    // blnAddPresentation برای اطمینان از بارگذاری یک ارائه استفاده می‌شود.
    if (blnAddPresentation == true)
    {
        try
        {
            strName = objPres.Name;
        }
        catch (Exception ex)
        {
            objPres = objPPT.Presentations.Add(MsoTriState.msoTrue);
        }
    }

    // blnAddSlide برای اطمینان از وجود حداقل یک اسلاید در ارائه استفاده می‌شود.
    if (blnAddSlide)
    {
        try
        {
            strName = objPres.Slides[1].Name;
        }
        catch (Exception ex)
        {
            Microsoft.Office.Interop.PowerPoint.Slide objSlide = null;
            Microsoft.Office.Interop.PowerPoint.CustomLayout objCustomLayout = null;
            objCustomLayout = objPres.SlideMaster.CustomLayouts[1];
            objSlide = objPres.Slides.AddSlide(1, objCustomLayout);
            objSlide.Layout = Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutText;
            objCustomLayout = null;
            objSlide = null;
        }
    }
}

نتیجه:

نمودار ایجاد شده با VSTO

مثال Aspose.Slides برای .NET

مثال زیر نشان می‌دهد چگونه می‌توان یک نمودار ساده را در یک ارائه PowerPoint با Aspose.Slides برای .NET ایجاد کرد. این کد نحوه افزودن یک نمودار ستونی خوشه‌ای 3 بعدی، پر کردن آن با داده‌های نمونه، و سفارشی‌سازی ظاهر آن را نشان می‌دهد. تنها با چند خط کد می‌توانید نمودارها را به‌صورت پویا تولید کرده و بدون استفاده از Microsoft Office در ارائه‌های خود ادغام کنید.

  1. یک نمونه از کلاس ارائه ایجاد کنید.
  2. به اولین اسلاید ارجاع بگیرید.
  3. یک نمودار ستونی خوشه‌ای 3 بعدی افزودن کنید و به آن دسترسی پیدا کنید.
  4. به داده‌های نمودار دسترسی پیدا کنید.
  5. سری‌های استفاده‌نشده 2 و 3 را حذف کنید.
  6. دسته‌بندی‌های نمودار را با به‌روزرسانی برچسب‌ها اصلاح کنید.
  7. مقادیر سری 1 را به‌روزرسانی کنید.
  8. به عنوان نمودار دسترسی پیدا کنید و ویژگی‌های قلم آن را تنظیم کنید.
  9. محور مقدار نمودار را پیکربندی کنید، شامل واحد بزرگ، واحد کوچک، حداکثر و حداقل مقادیر.
  10. زوایای چرخش نمودار را بر محورهاى X و Y تنظیم کنید.
  11. ارائه را در قالب PPTX ذخیره کنید.
    // یک ارائه خالی ایجاد کنید.
    using (Presentation presentation = new Presentation())
    {
        // به اولین اسلاید دسترسی پیدا کنید.
        ISlide slide = presentation.Slides[0];

        // یک نمودار پیش‌فرض اضافه کنید.
        IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn3D, 20, 30, 400, 300);

        // داده‌های نمودار را دریافت کنید.
        IChartData chartData = chart.ChartData;

        // سری پیش‌فرض اضافی را حذف کنید.
        chartData.Series.RemoveAt(1);
        chartData.Series.RemoveAt(1);

        // نام‌های دسته‌بندی نمودار را اصلاح کنید.
        chartData.Categories[0].AsCell.Value = "Bikes";
        chartData.Categories[1].AsCell.Value = "Accessories";
        chartData.Categories[2].AsCell.Value = "Repairs";
        chartData.Categories[3].AsCell.Value = "Clothing";

        // شاخص ورک‌شیت داده‌های نمودار را تنظیم کنید.
        int worksheetIndex = 0;

        // کتاب‌کار داده‌های نمودار را دریافت کنید.
        IChartDataWorkbook workbook = chart.ChartData.ChartDataWorkbook;

        // مقدارهای سری‌های نمودار را اصلاح کنید.
        chartData.Series[0].DataPoints.AddDataPointForBarSeries(workbook.GetCell(worksheetIndex, 1, 1, 1000));
        chartData.Series[0].DataPoints.AddDataPointForBarSeries(workbook.GetCell(worksheetIndex, 2, 1, 2500));
        chartData.Series[0].DataPoints.AddDataPointForBarSeries(workbook.GetCell(worksheetIndex, 3, 1, 4000));
        chartData.Series[0].DataPoints.AddDataPointForBarSeries(workbook.GetCell(worksheetIndex, 4, 1, 3000));

        // عنوان نمودار را تنظیم کنید.
        chart.HasTitle = true;
        chart.ChartTitle.AddTextFrameForOverriding("2007 Sales");
        IPortionFormat format = chart.ChartTitle.TextFrameForOverriding.Paragraphs[0].Portions[0].PortionFormat;
        format.FontItalic = NullableBool.True;
        format.FontHeight = 18;
        format.FillFormat.FillType = FillType.Solid;
        format.FillFormat.SolidFillColor.Color = Color.Black;

        // گزینه‌های محور را تنظیم کنید.
        chart.Axes.VerticalAxis.IsAutomaticMaxValue = false;
        chart.Axes.VerticalAxis.IsAutomaticMinValue = false;
        chart.Axes.VerticalAxis.IsAutomaticMajorUnit = false;
        chart.Axes.VerticalAxis.IsAutomaticMinorUnit = false;

        chart.Axes.VerticalAxis.MaxValue = 4000.0F;
        chart.Axes.VerticalAxis.MinValue = 0.0F;
        chart.Axes.VerticalAxis.MajorUnit = 2000.0F;
        chart.Axes.VerticalAxis.MinorUnit = 1000.0F;
        chart.Axes.VerticalAxis.TickLabelPosition = TickLabelPositionType.NextTo;

        // چرخش نمودار را تنظیم کنید.
        chart.Rotation3D.RotationX = 15;
        chart.Rotation3D.RotationY = 20;

        // ارائه را به‌عنوان فایل PPTX ذخیره کنید.
        presentation.Save("Aspose_Sample_Chart.pptx", SaveFormat.Pptx);
    }

نتیجه:

نمودار ایجاد شده با Aspose.Slides برای .NET

پرسش‌های متداول

آیا می‌توانم انواع دیگر نمودارها مانند نمودار دایره‌ای، خطی یا میله‌ای را با Aspose.Slides ایجاد کنم؟

بله. Aspose.Slides برای .NET طیف گسترده‌ای از انواع نمودار را پشتیبانی می‌کند، از جمله نمودارهای دایره‌ای، خطی، میله‌ای، پراکندگی، حبابی و موارد دیگر. می‌توانید نوع موردنظر را با استفاده از شمارندهٔ ChartType در هنگام افزودن نمودار مشخص کنید.

آیا می‌توانم سبک‌ها یا تم‌های سفارشی را به نمودار اعمال کنم؟

بله. می‌توانید ظاهر نمودار را به‌طور کامل سفارشی کنید، از جمله رنگ‌ها، قلم‌ها، پرکننده‌ها، خطوط حاشیه، خطوط شبکه و طرح‌بندی. با این حال، اعمال دقیق تم‌های Office همان‌طور که در PowerPoint دیده می‌شود، نیازمند تنظیم دستی هر سبک به‌صورت جداگانه است.

آیا می‌توانم نمودار را به‌صورت تصویر جداگانه از اسلاید استخراج کنم؟

بله، Aspose.Slides به شما امکان می‌دهد هر شکلی شامل نمودارها را به‌عنوان تصویر جداگانه (مثلاً PNG یا JPEG) با استفاده از متد GetImage روی شکل استخراج کنید.