翻譯|使用教程|編輯:吉煒煒|2025-04-17 09:51:35.890|閱讀 125 次
概述:可視化項(xiàng)目時間線對于有效規(guī)劃和跟蹤至關(guān)重要。在本篇博文中,您將學(xué)習(xí)如何使用 C# 在 Excel 中創(chuàng)建甘特圖。只需幾行代碼,即可自動生成動態(tài)、美觀的甘特圖。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
可視化項(xiàng)目時間線對于有效規(guī)劃和跟蹤至關(guān)重要。在本篇博文中,您將學(xué)習(xí)如何使用 C# 在 Excel 中創(chuàng)建甘特圖。只需幾行代碼,即可自動生成動態(tài)、美觀的甘特圖。無論您是在構(gòu)建項(xiàng)目管理工具還是處理內(nèi)部報告,本指南都將向您展示如何將任務(wù)數(shù)據(jù)轉(zhuǎn)換為清晰專業(yè)的時間線——完全可自定義,并可導(dǎo)出為 Excel、PDF 或圖像格式。讓我們開始吧!
本文涵蓋以下主題:
Aspose.Cells for .NET是一個功能強(qiáng)大的 Excel 庫,可簡化在 Excel 中創(chuàng)建甘特圖的過程。它提供了強(qiáng)大的功能,可以通過編程方式操作 Excel 文件。借助 Aspose.Cells,開發(fā)人員可以輕松創(chuàng)建、修改和自定義圖表和圖形。該庫支持各種 Excel 格式并提供高級功能,是項(xiàng)目經(jīng)理和開發(fā)人員的理想選擇。
Aspose.Cells for .NET 因其易于集成和靈活性而脫穎而出。以下是一些主要功能:
按照以下簡單步驟開始使用 Aspose.Cells for .NET:
Aspose.Cells 沒有內(nèi)置甘特圖類型,因?yàn)?Excel 本身也沒有提供原生甘特圖類型。然而,Excel 中的甘特圖通常是使用堆疊條形圖結(jié)合自定義格式創(chuàng)建的,而 Aspose.Cells 可以通過編程方式支持這種方法。
您可以通過以下方式在 Excel 中自動創(chuàng)建甘特圖
按照以下步驟使用 C# 和 Aspose.Cells for .NET 在 Excel 中創(chuàng)建甘特圖:
以下是實(shí)現(xiàn)上述步驟的 C# 代碼片段:
使用 C# 在 Excel 中創(chuàng)建甘特圖
您可以使用 Aspose.Cells for .NET 中的以下自定義功能來增強(qiáng)甘特圖:
條形顏色
透明偏移
任務(wù)順序
數(shù)據(jù)標(biāo)簽
圖例控制
單獨(dú)的欄樣式
圖表尺寸
導(dǎo)出選項(xiàng)
下面是一個 C# 代碼片段,它實(shí)現(xiàn)了一些上述自定義功能:
使用 C# 在 Excel 中自定義甘特圖
在本篇博文中,我們探討了如何使用 C# 在 Excel 中創(chuàng)建甘特圖。Aspose.Cells for .NET 憑借其強(qiáng)大的功能和靈活性簡化了這一過程。
————————————————————————————————————————
關(guān)于慧都科技:
慧都科技是專注軟件工程、智能制造、石油工程三大行業(yè)的數(shù)字化解決方案服務(wù)商。在軟件工程領(lǐng)域,我們提供開發(fā)控件、研發(fā)管理、代碼開發(fā)、部署運(yùn)維等軟件開發(fā)全鏈路所需的產(chǎn)品,提供正版授權(quán)采購、技術(shù)選型、個性化維保等服務(wù),幫助客戶實(shí)現(xiàn)技術(shù)合規(guī)、降本增效與風(fēng)險可控。慧都科技Aspose在中國的官方授權(quán)代理商,提供Aspose系列產(chǎn)品免費(fèi)試用,咨詢,正版銷售等于一體的專業(yè)化服務(wù)。Aspose是文檔處理領(lǐng)域的優(yōu)秀產(chǎn)品,幫助企業(yè)高效構(gòu)建文檔處理的應(yīng)用程序。
Aspose 限時特惠火熱進(jìn)行中,獲取優(yōu)惠
下載|體驗(yàn)更多Aspose產(chǎn)品,請咨詢,或撥打產(chǎn)品熱線:023-68661681
加入Aspose技術(shù)交流QQ群(1041253375),與更多小伙伴一起探討提升開發(fā)技能。
PM> Install-Package Aspose.Cells
如何使用堆疊條形圖創(chuàng)建甘特圖
您可以使用 Aspose.Cells 做什么:
甘特圖數(shù)據(jù)示例
| 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 中創(chuàng)建甘特圖
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 中自定義甘特圖
設(shè)置持續(xù)時間條形的純色:
chart.NSeries[1].Area.ForegroundColor = Color.SteelBlue;
使偏移(不可見)條完全透明。
chart.NSeries[0].Area.Formatting = FormattingType.None;
反轉(zhuǎn) Y 軸以從上到下顯示任務(wù):
chart.CategoryAxis.IsPlotOrderReversed = true;
直接在每個任務(wù)欄上顯示持續(xù)時間:
chart.NSeries[1].DataLabels.ShowValue = true;
刪除或重新定位圖表圖例。
chart.ShowLegend = false; // Or reposition: chart.Legend.Position = LegendPositionType.Bottom;
為每個任務(wù)設(shè)置自定義顏色。
var series = chart.NSeries[1]; series.Points[0].Area.ForegroundColor = Color.Green; series.Points[1].Area.ForegroundColor = Color.Red;
調(diào)整圖表大小并重新定位:
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);
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);
結(jié)論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)