半岛权威十大直营(官方)网站

Excel处理控件Aspose.Cells教程:使用 C# 在 Excel 中创建甘特图

翻译|使用教程|编辑:吉炜炜|2025-04-17 09:51:35.890|阅读 9 次

概述:可视化项目时间线对于有效规划和跟踪至关重要。在本篇博文中,您将学习如何使用 C# 在 Excel 中创建甘特图。只需几行代码,即可自动生成动态、美观的甘特图。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

相关链接:

可视化项目时间线对于有效规划和跟踪至关重要。在本篇博文中,您将学习如何使用 C# 在 Excel 中创建甘特图。只需几行代码,即可自动生成动态、美观的甘特图。无论您是在构建项目管理工具还是处理内部报告,本指南都将向您展示如何将任务数据转换为清晰专业的时间线——完全可自定义,并可导出为 Excel、PDF 或图像格式。让我们开始吧!

本文涵盖以下主题:

  • 使用 C# Excel 库创建甘特图
  • 如何使用堆叠条形图创建甘特图
  • 使用 C# 在 Excel 中创建甘特图
  • 使用 C# 在 Excel 中自定义甘特图
  • 免费资源

使用 C# Excel 库创建甘特图

Aspose.Cells for .NET是一个功能强大的 Excel 库,可简化在 Excel 中创建甘特图的过程。它提供了强大的功能,可以通过编程方式操作 Excel 文件。借助 Aspose.Cells,开发人员可以轻松创建、修改和自定义图表和图形。该库支持各种 Excel 格式并提供高级功能,是项目经理和开发人员的理想选择。

Aspose.Cells for .NET 因其易于集成和灵活性而脱颖而出。以下是一些主要功能:

  • 全面的 API:访问各种 Excel 功能。
  • 高级定制:定制图表和图形以满足特定需求。
  • 高性能:高效处理大型数据集而不影响速度。
  • 多种格式支持:使用各种 Excel 格式,包括 XLSX、XLS 和 CSV。

按照以下简单步骤开始使用 Aspose.Cells for .NET:

  1. 从发布版本中下载该库

Aspose.Cells 最新版下载 

  1. 使用以下命令通过 NuGet 包管理器安装它:

PM> Install-Package Aspose.Cells

如何使用堆叠条形图创建甘特图

Aspose.Cells 没有内置甘特图类型,因为 Excel 本身也没有提供原生甘特图类型。然而,Excel 中的甘特图通常是使用堆叠条形图结合自定义格式创建的,而 Aspose.Cells 可以通过编程方式支持这种方法。

您可以使用 Aspose.Cells 做什么:

您可以通过以下方式在 Excel 中自动创建甘特图

  • 设置任务数据(任务名称、开始日期、持续时间)。
  • 添加堆积条形图。
  • 使用一个系列表示“起始偏移量”(隐藏),另一个系列表示“持续时间”(可见)。
  • 将图表格式化为类似于甘特图。

甘特图数据示例

| 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           |

使用 C# 在 Excel 中创建甘特图

按照以下步骤使用 C# 和 Aspose.Cells for .NET 在 Excel 中创建甘特图:

  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;

// Load the Excel file
Workbook workbook = new Workbook("sample-data.xlsx");
Worksheet sheet = workbook.Worksheets[0];

// Add Gantt Chart
int chartIndex = sheet.Charts.Add(ChartType.BarStacked, 7, 0, 30, 10);
Chart chart = sheet.Charts[chartIndex];
chart.Title.Text = "Gantt Chart";

// Add offset and duration as series
chart.NSeries.Add("D2:D6", true); // Start Offset
chart.NSeries.Add("C2:C6", true); // Duration

// Set task names as categories
chart.NSeries.CategoryData = "A2:A6";

// Make offset bars invisible
chart.NSeries[0].Area.Formatting = FormattingType.None;

// Style duration bars
chart.NSeries[1].Area.Formatting = FormattingType.Custom;
chart.NSeries[1].Area.ForegroundColor = Color.SteelBlue;
chart.NSeries[1].DataLabels.ShowValue = true;

// Axis settings
chart.CategoryAxis.IsPlotOrderReversed = true;
chart.CategoryAxis.Title.Text = "Tasks";
chart.ValueAxis.Title.Text = "Days from Start";
chart.ValueAxis.MajorGridLines.IsVisible = true;

// Hide legend
chart.ShowLegend = false;

// Resize chart (optional)
chart.ChartObject.Width = 700;
chart.ChartObject.Height = 400;

// Save the result
workbook.Save("GanttChartResult.xlsx", SaveFormat.Xlsx);
使用 C# 在 Excel 中创建甘特图

使用 C# 在 Excel 中创建甘特图

使用 C# 在 Excel 中自定义甘特图

您可以使用 Aspose.Cells for .NET 中的以下自定义功能来增强甘特图:

  • 条形颜色
    设置持续时间条形的纯色:

chart.NSeries[1].Area.ForegroundColor = Color.SteelBlue;
  • 透明偏移
    使偏移(不可见)条完全透明。

    
    
    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;

// Initialize workbook and worksheet
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);

// Headers
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();

// Add a chart
int chartIndex = sheet.Charts.Add(ChartType.BarStacked, 10, 0, 30, 10);
Chart chart = sheet.Charts[chartIndex];
chart.Title.Text = "Project Gantt Chart";

// Add Series: Offset (invisible), Duration (visible)
chart.NSeries.Add("D2:D6", true); // Offset
chart.NSeries.Add("C2:C6", true); // Duration

// Set category labels
chart.NSeries.CategoryData = "A2:A6";

// Make Offset series transparent
chart.NSeries[0].Area.Formatting = FormattingType.None;

// Color each task bar differently
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
}

// Show data labels
chart.NSeries[1].DataLabels.ShowValue = true;


// Axis Settings
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;

// Remove Legend
chart.ShowLegend = false;

// Resize chart
chart.ChartObject.Width = 700;
chart.ChartObject.Height = 400;

// Export to Excel
workbook.Save("CustomizedGanttChart.xlsx", SaveFormat.Xlsx);
使用 C# 在 Excel 中自定义甘特图

使用 C# 在 Excel 中自定义甘特图

结论

在本篇博文中,我们探讨了如何使用 C# 在 Excel 中创建甘特图。Aspose.Cells for .NET 凭借其强大的功能和灵活性简化了这一过程。

————————————————————————————————————————

关于慧都科技:

慧都科技是专注软件工程、智能制造、石油工程三大行业的数字化解决方案服务商。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。慧都科技Aspose在中国的官方授权代理商,提供Aspose系列产品免费试用,咨询,正版销售等于一体的专业化服务。Aspose是文档处理领域的优秀产品,帮助企业高效构建文档处理的应用程序。

Aspose 限时特惠火热进行中,获取优惠

下载|体验更多Aspose产品咨询,或拨打产品热线:023-68661681

加入Aspose技术交流QQ群(1041253375),与更多小伙伴一起探讨提升开发技能。

aspose下载



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@wqylolg.cn

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP