ایجاد نمودار گانت در اکسل با استفاده از C#

به تصویر کشیدن زمانبندی پروژه ها برای برنامه ریزی و پیگیری مؤثر مهم است. در این پست وبلاگ، شما یاد خواهید گرفت که چگونه یک نمودار گانت در اکسل با استفاده از C# ایجاد کنید. تنها با چند خط کد، می‌توانید تولید نمودارهای گانت پویا و بصری جذاب را خودکار کنید. چه در حال ساخت یک ابزار مدیریت پروژه باشید و چه در حال کار بر روی گزارش‌دهی داخلی، این راهنما به شما نشان می‌دهد که چگونه داده‌های مربوط به وظایف را به یک زمانبندی واضح و حرفه‌ای تبدیل کنید—کاملاً قابل سفارشی‌سازی و آماده برای صادرات به اکسل، PDF، یا فرمت‌های تصویری. بیایید شروع کنیم!

این مقاله موضوعات زیر را پوشش می‌دهد:

کتابخانه C# Excel برای ایجاد نمودارهای گانت

Aspose.Cells for .NET یک کتابخانه قدرتمند Excel است که فرآیند ایجاد نمودارهای گانت در Excel را ساده می‌کند. این کتابخانه ویژگی‌های قوی برای دستکاری فایل‌های Excel به‌صورت برنامه‌نویسی ارائه می‌دهد. با Aspose.Cells، توسعه‌دهندگان می‌توانند به راحتی نمودارها و گراف‌ها را ایجاد، ویرایش و سفارشی کنند. این کتابخانه از فرمت‌های مختلف Excel پشتیبانی می‌کند و امکانات پیشرفته‌ای را ارائه می‌دهد، که آن را به انتخابی ایده‌آل برای مدیران پروژه و توسعه‌دهندگان تبدیل می‌کند.

Aspose.Cells برای .NET به خاطر سهولت ادغام و انعطاف‌پذیری خود برجسته است. در اینجا برخی از ویژگی‌های کلیدی آورده شده است:

  • API جامع: به مجموعه وسیعی از قابلیت‌های اکسل دسترسی پیدا کنید.
  • سفارشی‌سازی پیشرفته: نمودارها و گراف‌ها را برای برآورده کردن نیازهای خاص تنظیم کنید.
  • عملکرد بالا: به طور مؤثر داده‌های بزرگ را بدون از دست دادن سرعت مدیریت کنید.
  • پشتیبانی از فرمت های متعدد: با فرمت های مختلف اکسل کار کنید، از جمله XLSX، XLS و CSV.

از این مراحل ساده برای شروع با Aspose.Cells برای .NET پیروی کنید:

  1. کتابخانه را از releases دانلود کنید.
  2. آن را از طریق NuGet Package Manager با فرمان زیر نصب کنید:
    PM> Install-Package Aspose.Cells
    

چگونه یک نمودار گانت با استفاده از نمودارهای میله‌ای انباشته بسازیم

Aspose.Cells نوع نمودار گانت داخلی ندارد زیرا خود Excel نیز نوع نمودار گانت بومی ارائه نمی‌دهد. با این حال، نمودارهای گانت در Excel معمولاً با استفاده از نمودارهای میله‌ای انبوه که با فرمت‌بندی سفارشی ترکیب شده‌اند، ایجاد می‌شوند — و Aspose.Cells از آن رویکرد به‌صورت برنامه‌نویسی پشتیبانی می‌کند.

چکارهایی که می‌توانید با Aspose.Cells انجام دهید:

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

  • تنظیم داده‌های وظیفه (نام وظیفه، تاریخ شروع، مدت زمان).
  • اضافه کردن نمودار میله‌ای انباشته.
  • استفاده از یک سری برای “offset شروع” (پنهان) و سری دیگر برای “مدت زمان” (قابل مشاهده).
  • فرمت‌دهی نمودار به گونه‌ای که به نمودار گانت شبیه شود.

نمونه داده‌های نمودار گانت


| Task   | Start Date  | Duration | Start Offset |
|--------|-------------|----------|--------------|
| Task 1 | 2025-04-01  | 3        | 0            |
| Task 2 | 2025-04-03  | 6        | 2            |
| Task 3 | 2025-04-08  | 10       | 7            |
| Task 4 | 2025-04-18  | 3        | 17           |
| Task 5 | 2025-04-21  | 5        | 20           |

Create a Gantt Chart in Excel using C#

این مراحل را دنبال کنید تا یک نمودار گانت در اکسل با استفاده از C# و Aspose.Cells برای .NET ایجاد کنید:

  1. یک فایل Excel موجود را با استفاده از کلاس Workbook بارگذاری کنید.
  2. به اولین برگه با استفاده از workbook.Worksheets[0] دسترسی پیدا کنید.
  3. یک نمودار با استفاده از ChartType.BarStacked اضافه کنید تا یک چیدمان گانت چارت را شبیه‌سازی کنید.
  4. افزودن آفست و مدت به عنوان سری.
  5. برچسب‌های دسته‌بندی را با استفاده از ویژگی CategoryData تنظیم کنید.
  6. تنظیم سبک‌ها و تنظیمات محور.
  7. کاربرگ را با استفاده از workbook.Save() ذخیره کنید.

این یک قطعه کد C# است که مراحل فوق را پیاده‌سازی می‌کند:

using Aspose.Cells;
using Aspose.Cells.Charts;

// فایل اکسل را بارگذاری کنید
Workbook workbook = new Workbook("sample-data.xlsx");
Worksheet sheet = workbook.Worksheets[0];

// نمودار گانت را اضافه کنید
int chartIndex = sheet.Charts.Add(ChartType.BarStacked, 7, 0, 30, 10);
Chart chart = sheet.Charts[chartIndex];
chart.Title.Text = "Gantt Chart";

// افزودن offset و duration به عنوان سری
chart.NSeries.Add("D2:D6", true); // Start Offset
chart.NSeries.Add("C2:C6", true); // Duration

// نام‌های کار را به عنوان دسته‌بندی‌ها تعیین کنید
chart.NSeries.CategoryData = "A2:A6";

// بارهای افست را نامرئی کنید
chart.NSeries[0].Area.Formatting = FormattingType.None;

// نوارهای مدت زمان استایل دهید
chart.NSeries[1].Area.Formatting = FormattingType.Custom;
chart.NSeries[1].Area.ForegroundColor = Color.SteelBlue;
chart.NSeries[1].DataLabels.ShowValue = true;

// تنظیمات محور
chart.CategoryAxis.IsPlotOrderReversed = true;
chart.CategoryAxis.Title.Text = "Tasks";
chart.ValueAxis.Title.Text = "Days from Start";
chart.ValueAxis.MajorGridLines.IsVisible = true;

// افسانه را پنهان کن
chart.ShowLegend = false;

// چارت را تغییر اندازه دهید (اختیاری)
chart.ChartObject.Width = 700;
chart.ChartObject.Height = 400;

// Save the result
workbook.Save("GanttChartResult.xlsx", SaveFormat.Xlsx);
Create a Gantt Chart in Excel using C#

Create a Gantt Chart in Excel using C#

گراف گانت را در اکسل با استفاده از C# سفارشی کنید

شما می‌توانید نمودار گانت خود را با استفاده از ویژگی‌های سفارشی‌سازی زیر در Aspose.Cells برای .NET بهبود دهید:

  • رنگ های نوار رنگ جامد برای نوارهای مدت زمان تنظیم کنید:

    chart.NSeries[1].Area.ForegroundColor = Color.SteelBlue;
    
  • Offset های شفاف بارهای افست (غیر قابل مشاهده) را کاملاً شفاف کنید.

    chart.NSeries[0].Area.Formatting = FormattingType.None;
    
  • ترتیب وظیفه محور Y را معکوس کنید تا کارها از بالا به پایین نشان داده شوند:

    chart.CategoryAxis.IsPlotOrderReversed = true;
    
  • برچسب‌های داده مدت زمان را مستقیماً در هر نوار وظیفه نمایش دهید:

    chart.NSeries[1].DataLabels.ShowValue = true;
    
  • کنترل نشان‌واره افسانه‌ی نمودار را حذف یا دوباره قرار دهید.

    chart.ShowLegend = false;
    // Or reposition: chart.Legend.Position = LegendPositionType.Bottom;
    
  • سبک‌دهی نوار جداگانه برای هر کار رنگ‌های سفارشی تنظیم کنید.

    var series = chart.NSeries[1];
    series.Points[0].Area.ForegroundColor = Color.Green;
    series.Points[1].Area.ForegroundColor = Color.Red;
    
  • ابعاد نمودار چارت را تغییر اندازه و جابجا کنید:

    chart.ChartObject.Width = 700;
    chart.ChartObject.Height = 400;
    
  • گزینه‌های صادرات چارت را به Excel، PDF یا تصویر ذخیره کنید.

    workbook.Save("GanttChart.xlsx");
    workbook.Save("GanttChart.pdf", SaveFormat.Pdf);
    chart.ToImage("chart.png", ImageFormat.Png);
    

در اینجا یک قطعه کد C# است که تعدادی از سفارشی‌سازی‌های فوق‌الذکر را پیاده‌سازی می‌کند:

using Aspose.Cells;
using Aspose.Cells.Charts;

// کارbook و کارsheet را راه‌اندازی کنید.
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "Gantt Data";

// Sample Task Data with Dates
DateTime projectStart = new DateTime(2025, 4, 1);

// سرفصل‌ها
sheet.Cells["A1"].PutValue("Task");
sheet.Cells["B1"].PutValue("Start Date");
sheet.Cells["C1"].PutValue("Duration (Days)");
sheet.Cells["D1"].PutValue("Start Offset");
sheet.Cells["E1"].PutValue("End Date");

// Data
string[,] tasks = {
        { "Task 1", "2025-04-01", "3" },
        { "Task 2", "2025-04-03", "6" },
        { "Task 3", "2025-04-08", "10" },
        { "Task 4", "2025-04-18", "3" },
        { "Task 5", "2025-04-21", "5" }
    };

for (int i = 0; i < tasks.GetLength(0); i++)
{
    int row = i + 1 + 1; // Start from row 2

    sheet.Cells[row, 0].PutValue(tasks[i, 0]); // Task Name
    sheet.Cells[row, 1].PutValue(DateTime.Parse(tasks[i, 1])); // Start Date
    sheet.Cells[row, 2].PutValue(int.Parse(tasks[i, 2])); // Duration

    // Offset: = StartDate - ProjectStartDate
    sheet.Cells[row, 3].Formula = $"=B{row + 1} - DATE(2025,4,1)";
    sheet.Cells[row, 4].Formula = $"=B{row + 1} + C{row + 1}";
}

// Autofit
sheet.AutoFitColumns();

// یک نمودار اضافه کنید
int chartIndex = sheet.Charts.Add(ChartType.BarStacked, 10, 0, 30, 10);
Chart chart = sheet.Charts[chartIndex];
chart.Title.Text = "Project Gantt Chart";

// افزودن سری:.Offset (نامرئی) ,Duration (قابل مشاهده)
chart.NSeries.Add("D2:D6", true); // Offset
chart.NSeries.Add("C2:C6", true); // Duration

// برچسب‌های دسته‌بندی را تنظیم کنید
chart.NSeries.CategoryData = "A2:A6";

// سری Offset را شفاف کنید
chart.NSeries[0].Area.Formatting = FormattingType.None;

// هر نوار وظیفه را به رنگ متفاوتی رنگ آمیزی کنید.
Series durationSeries = chart.NSeries[1];
for (int i = 0; i < durationSeries.Points.Count; i++)
{
    durationSeries.Points[i].Area.ForegroundColor = Color.FromArgb(255, 100 + i * 30, 150); // Gradient color variation
}

// برچسب‌های داده را نمایش دهید
chart.NSeries[1].DataLabels.ShowValue = true;


// تنظیمات محور
chart.CategoryAxis.Title.Text = "Tasks";
chart.CategoryAxis.IsPlotOrderReversed = true;
chart.ValueAxis.Title.Text = "Days from Project Start";
chart.ValueAxis.MajorGridLines.IsVisible = true;
chart.ValueAxis.MinValue = 0;
chart.ValueAxis.MajorUnit = 5;

// حذف افسانه
chart.ShowLegend = false;

// چارت را تغییر اندازه بدهید
chart.ChartObject.Width = 700;
chart.ChartObject.Height = 400;

// به اکسل صادر کنید
workbook.Save("CustomizedGanttChart.xlsx", SaveFormat.Xlsx);
گانت چارت را در اکسل با استفاده از C# شخصی‌سازی کنید

گانت چارت را در اکسل با استفاده از C# سفارشی کنید

مجوز رایگان بگیرید

به کشف محصولات Aspose علاقه‌مند هستید؟ به license page مراجعه کنید تا یک مجوز موقت رایگان دریافت کنید. شروع کار آسان است و می‌توانید پتانسیل کامل Aspose.Cells را برای پروژه‌های خود باز کنید!

نمودار گانت اکسل: منابع رایگان

اینجا را متوقف نکنید! منابع اضافی را بررسی کنید تا درک خود را از Aspose.Cells بیشتر کنید. این منابع به شما کمک می‌کنند تا اتوماسیون اکسل را تسلط پیدا کنید و مهارت‌های خود را تقویت کنید.

نتیجه گیری

در این پست وبلاگ، ما نحوه ایجاد یک نمودار گانت در اکسل با استفاده از C# را بررسی کردیم. Aspose.Cells برای .NET این فرآیند را با ویژگی‌های قدرتمند و انعطاف‌پذیری خود ساده می‌کند. ما شما را ترغیب می‌کنیم که بیشتر در مورد Aspose.Cells برای .NET تحقیق کنید تا قابلیت‌های مدیریت پروژه خود را ارتقا دهید.

اگر سوالی دارید یا به کمک بیشتری نیاز دارید، لطفاً با ما در free support forum تماس بگیرید.

همچنین ببینید