Excel处理控件Aspose.Cells教程:使用 Python 在 Excel 中创建甘特图
<p><img src="https://image.evget.com/attachment/keditor/image/20250716/101720_3.png"></p><p>时间轴上的任务可视化有助于更好地管理项目。本文将学习如何使用<em><strong>Aspose.Cells </strong>for Python 通过 .NET</em>在 Excel 中创建甘特图。只需几行代码,即可将简单的任务数据转换为动态清晰的可视化时间轴,非常适合用于报表、仪表板和规划文档。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Aspose.Cells官方试用版免费下载,请联系Aspose中国区官方授权经销商<span style="color: rgba(0, 0, 0, 1)">慧都科技</span></strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong><em>加入Aspose技术交流QQ群(1041253375),与更多小伙伴一起探讨提升开发技能。</em></strong></span></p>
<h2 id="python-excel-library">用于甘特图的 Python Excel 库</h2>
<p><strong>Aspose.Cells</strong> for Python via .NET是一个功能强大的库,用于在 Python 中处理 Excel 文件。它允许您以编程方式创建、修改和格式化电子表格,包括甘特图等图表。</p>
<h3 id="key-features">主要特点:</h3>
<ul>
<li>完全控制 Excel 图表和数据。</li>
<li>支持 XLSX、XLS、CSV 和 PDF。</li>
<li>大文件时具有高性能。</li>
<li>丰富的图表自定义选项。</li>
</ul>
<p>首先,请使用以下命令安装该库:</p>
<p> </p>
<pre class="prettyprint lang-js highlighter-hljs"><code>pip install aspose-cells</code></pre>
<blockquote>
<p>您也可以从<strong>发布版本</strong>中下载它。</p>
</blockquote>
<h2 id="how-to-create-gantt-chart-in-excel">甘特图与堆叠条形图</h2>
<p>Excel 和 <strong>Aspose.Cells </strong>均未提供内置甘特图类型。但您仍然可以使用<strong>堆叠条形图</strong>并进行一些格式设置来创建甘特图。这是一种常用技术,<strong>Aspose.Cells</strong> 完全通过代码支持该技术。</p>
<h3 id="what-you-can-do-with-asposecells">Aspose.Cells 的功能</h3>
<p>您可以通过执行以下操作轻松地在 Excel 中自动执行甘特图:</p>
<ul>
<li>输入任务数据(任务名称、开始日期和持续时间)。</li>
<li>插入堆积条形图。</li>
<li>使用一个系列作为“起始偏移量”(不可见),使用另一个系列作为“持续时间”(可见)。</li>
<li>将图表格式化为甘特图。</li>
</ul>
<p>这为您提供了一个可以动态生成的专业时间线。</p>
<h3 id="sample-task-data">示例任务数据</h3>
<p>这是我们将使用的示例表:</p>
<table>
<thead>
<tr>
<th>任务</th>
<th>开始日期</th>
<th>期间</th>
<th>起始偏移</th>
</tr>
</thead>
<tbody>
<tr>
<td>任务 1</td>
<td>2025年4月1日</td>
<td>3</td>
<td>0</td>
</tr>
<tr>
<td>任务 2</td>
<td>2025年4月3日</td>
<td>6</td>
<td>2</td>
</tr>
<tr>
<td>任务 3</td>
<td>2025年4月8日</td>
<td>10</td>
<td>7</td>
</tr>
<tr>
<td>任务 4</td>
<td>2025年4月18日</td>
<td>3</td>
<td>17</td>
</tr>
<tr>
<td>任务 5</td>
<td>2025年4月21日</td>
<td>5</td>
<td>20</td>
</tr>
</tbody>
</table>
<h2 id="create-gantt-chart-in-excel">使用 Python 在 Excel 中创建甘特图</h2>
<p>按照以下步骤通过 .NET 使用 <strong>Aspose.Cells</strong> for Python 在 Excel 中创建甘特图:</p>
<ul>
<li>使用该类加载现有的 Excel 数据文件Workbook。</li>
<li>获取第一个工作表workbook.worksheets。</li>
<li>添加堆积条形图以添加甘特图布局。</li>
<li>添加两个数据系列:一个用于偏移量,一个用于持续时间。</li>
<li>将任务名称设置为类别标签。</li>
<li>调整样式和轴设置来格式化图表。</li>
<li>使用该方法保存文件workbook.save()。</li>
</ul>
<p>以下是执行所有这些步骤的 Python 代码片段:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>import aspose.cells as cells
from aspose.pydrawing import Color
# Load the Excel file
workbook = cells.Workbook("sample-data.xlsx")
sheet = workbook.worksheets.get(0)
# Add Gantt Chart
chart_index = sheet.charts.add(cells.charts.ChartType.BAR_STACKED, 7, 0, 30, 10)
chart = sheet.charts
chart.title.text = "Gantt Chart"
# Add offset and duration as series
chart.n_series.add("D2:D6", True)# Start Offset
chart.n_series.add("C2:C6", True)# Duration
# Set task names as categories
chart.n_series.category_data = "A2:A6"
# Make offset bars invisible
chart.n_series.area.formatting = cells.charts.FormattingType.NONE
# Style duration bars
chart.n_series.area.formatting = cells.charts.FormattingType.CUSTOM
chart.n_series.area.foreground_color = Color.steel_blue
chart.n_series.data_labels.show_value = True
# Axis settings
chart.category_axis.is_plot_order_reversed = True
chart.category_axis.title.text = "Tasks"
chart.value_axis.title.text = "Days from Start"
chart.value_axis.major_grid_lines.is_visible = True
# Hide legend
chart.show_legend = False
# Resize chart (optional)
chart.chart_object.width = 700
chart.chart_object.height = 400
# Save the result
workbook.save("GanttChartResult.xlsx", cells.SaveFormat.XLSX)</code></pre>
<p>这将生成包含您的任务数据的干净的甘特图。</p>
<p><img src="https://image.evget.com/attachment/keditor/image/20250716/103035_4.jpg"></p>
<h2>自定义甘特图</h2>
<p>您可以使用以下可用选项自定义甘特图:</p>
<p><strong>条形颜色</strong></p>
<p>为持续时间条设置纯色:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>chart.n_series.area.foreground_color = Color.steel_blue</code></pre>
<p><strong>透明偏移</strong></p>
<p>使偏移(不可见)条完全透明。</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>chart.n_series.area.formatting = cells.charts.FormattingType.NONE</code></pre>
<p><strong>任务顺序</strong></p>
<p>反转 Y 轴以从上到下显示任务:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>chart.category_axis.is_plot_order_reversed = True</code></pre>
<p><strong>数据标签</strong></p>
<p>在每个任务栏上直接显示持续时间:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>chart.n_series.data_labels.show_value = True</code></pre>
<p><strong>图例控制</strong></p>
<p>删除或重新定位图表图例。</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>chart.show_legend = False
# Or reposition:
chart.legend.position = cells.charts.LegendPositionType.BOTTOM</code></pre>
<p><strong>设置自定义栏颜色</strong></p>
<pre class="prettyprint lang-js highlighter-hljs"><code>chart.n_series.points.area.foreground_color = Color.green
chart.n_series.points.area.foreground_color = Color.red</code></pre>
<p><strong>调整图表大小</strong></p>
<div class="highlight">
<pre class="prettyprint lang-js highlighter-hljs"><code>chart.chart_object.width = 700 chart.chart_object.height = 400 </code></pre>
</div>
<p><strong>导出为 PDF 或图像</strong></p>
<div class="highlight">
<pre class="prettyprint lang-js highlighter-hljs"><code>workbook.save("gantt_chart.pdf", cells.SaveFormat.PDF) chart.to_image("chart.png") </code></pre>
</div>
<p>以下 Python 代码片段应用了上面提到的一些自定义:</p>
<pre class="prettyprint lang-js highlighter-hljs"><code>import aspose.cells as cells
from aspose.pydrawing import Color
import datetime
# Initialize workbook and worksheet
workbook = cells.Workbook()
sheet = workbook.worksheets.get(0)
sheet.name = "Gantt Data"
# Project start date
project_start = datetime.date(2025, 4, 1)
# Headers
sheet.cells.get("A1").put_value("Task")
sheet.cells.get("B1").put_value("Start Date")
sheet.cells.get("C1").put_value("Duration (Days)")
sheet.cells.get("D1").put_value("Start Offset")
sheet.cells.get("E1").put_value("End Date")
# Task data:
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"]
]
# Fill data into the sheet
for i, task in enumerate(tasks):
row = i + 2# Start from row 2
sheet.cells.get(row, 0).put_value(task)# Task Name
sheet.cells.get(row, 1).put_value(datetime.datetime.strptime(task, "%Y-%m-%d").date())# Start Date
sheet.cells.get(row, 2).put_value(int(task))# Duration
# Offset and End Date formulas
sheet.cells.get(row, 3).formula = f"=B{row + 1} - DATE(2025,4,1)"# Offset
sheet.cells.get(row, 4).formula = f"=B{row + 1} + C{row + 1}"# End Date
# Auto-fit columns
sheet.auto_fit_columns()
# Add Gantt chart
chart_index = sheet.charts.add(cells.charts.ChartType.BAR_STACKED, 10, 0, 30, 10)
chart = sheet.charts
chart.title.text = "Project Gantt Chart"
# Add data series: Offset (invisible), Duration (visible)
chart.n_series.add("D2:D6", True)# Offset
chart.n_series.add("C2:C6", True)# Duration
# Set task names as category labels
chart.n_series.category_data = "A2:A6"
# Make offset bars invisible
chart.n_series.area.formatting = cells.charts.FormattingType.NONE
# Color each task bar differently
duration_series = chart.n_series
for i in range(duration_series.points.count):
red = 100 + i * 30
duration_series.points.area.foreground_color = Color.from_argb(255, red, 150)
# Show data labels on duration bars
duration_series.data_labels.show_value = True
# Axis configuration
chart.category_axis.title.text = "Tasks"
chart.category_axis.is_plot_order_reversed = True
chart.value_axis.title.text = "Days from Project Start"
chart.value_axis.major_grid_lines.is_visible = True
chart.value_axis.min_value = 0
chart.value_axis.major_unit = 5.0
# Hide legend
chart.show_legend = False
# Resize chart
chart.chart_object.width = 700
chart.chart_object.height = 400
# Save output
workbook.save("CustomizedGanttChart.xlsx", cells.SaveFormat.XLSX)</code></pre>
<div><img src="https://image.evget.com/attachment/keditor/image/20250716/103515_0.jpg"></div>
<p> </p>
<h2 id="final-words">总结</h2>
<p>使用<strong> Aspose.Cells </strong>for Python 通过 .NET 在 Excel 中创建甘特图既简单又高效。它让您可以完全控制图表设计和 Excel 自动化。</p><br><br>
来源:https://www.cnblogs.com/software-Development/p/18987496
頁:
[1]