基于Excel项目计划生成Gantt甘特图 - Python源码
1.什么是甘特图?
Gantt甘特图是一种用于项目管理的工具,以条形图的形式展示项目任务的时间安排。每个任务在图表上用一个水平条表示,条的长度和位置反映了任务的开始时间、持续时间和结束时间。甘特图通常包括以下元素:
任务名称:列出所有需要完成的任务。
时间轴:通常位于图表的顶部或底部,显示项目的时间范围。
进度条:显示每个任务的完成状态。
2.甘特图有哪些好处?
清晰的可视化:甘特图提供了项目任务的直观视图,使团队成员和利益相关者能够快速理解项目进度和时间安排。
任务管理:通过明确每个任务的起止时间和持续时间,项目经理可以更好地规划和分配资源。
进度跟踪:可以轻松识别项目的滞后任务,及时调整计划,确保项目按时完成。
促进沟通:甘特图为团队成员提供了共同的参考框架,促进了沟通和协作。
提高效率:通过可视化的时间安排和任务依赖关系,团队可以更有效地管理工作流程,减少重复和混乱。
风险管理:识别关键路径和任务之间的依赖关系,有助于提前发现潜在风险并制定应对策略。
3.有哪些好用的甘特图绘制工具?
-
常用的甘特图工具
-
Excel 手绘
-
Microsoft Project 自动生成甘特图
-
腾讯文档智能表格自动生成甘特图
-
-
免费的甘特图绘制工具
-
GanttProject
-
一个开源桌面应用程序,专注于创建和管理甘特图,适合小型项目。
-
-
TeamGantt
-
提供免费版本,适合小型团队,支持简单的甘特图创建和协作功能。
-
-
ClickUp
-
提供免费计划,包含甘特图视图,适合任务和项目管理。
-
-
Trello
-
虽然本身不是甘特图工具,但可以通过插件(如Planyway)实现甘特图功能,基本功能免费。
-
-
Airtable
-
提供免费套餐,支持甘特图视图,适合数据管理和项目可视化。
-
-
OpenProject
-
开源项目管理工具,提供甘特图功能,适合团队协作和项目跟踪。
-
-
Bitrix24
-
提供免费版本,包含甘特图功能,适合小型团队进行项目管理。
-
-
Google Sheets
-
可以使用模板或自行创建甘特图,灵活且免费,适合简单项目管理。
-
-
Python源码直接绘制
-
效果
-
Python源码
-
输入表格必须包含字段(列):开始日期,结束日期,状态
-
-
-
import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import PatternFill
# 定义颜色填充映射
status_to_color = {
'开放': '808080', # 灰色
'处理中': 'ADD8E6', # 浅蓝色
'完成': '90EE90', # 浅绿色
'已关闭': '008000' # 绿色
}
def create_gantt_chart(input_excel, sheet_name):
# 读取 Excel 数据
df = pd.read_excel(input_excel, sheet_name=sheet_name)
# 转换日期列为 datetime 类型
df['开始日期'] = pd.to_datetime(df['开始日期'])
df['结束日期'] = pd.to_datetime(df['结束日期'])
# 获取开始和结束时间的范围
date_range = pd.date_range(start=df['开始日期'].min(), end=df['结束日期'].max())
# 将日期列添加到 DataFrame 中
date_df = pd.DataFrame([{date.strftime('%m-%d'): 1 if row['开始日期'] <= date <= row['结束日期'] else None for date in date_range} for _, row in df.iterrows()])
gantt_data = pd.concat([df, date_df], axis=1)
# 打开 Excel 文件
wb = load_workbook(input_excel)
ws = wb[sheet_name]
# 查找数据的起始行和列
start_row = ws.max_row + 1
start_col = 12
# 将新数据插入到工作表中
for index, row in gantt_data.iterrows():
for col_num, value in enumerate(row, 1):
ws.cell(row=start_row + index, column=col_num).value = value
# 对生成的内容进行颜色标记
for row_num, row in enumerate(ws.iter_rows(min_row=start_row + 1, max_col=start_col + len(date_range), max_row=start_row + len(df)), start=start_row + 1):
status = row[5].value # 获取状态列的值
fill_color = status_to_color.get(status)
fill = PatternFill(start_color=fill_color, end_color=fill_color, fill_type="solid")
# 对日期范围进行颜色填充
for cell in row[start_col:]:
if cell.value == 1:
cell.fill = fill
cell.value = "" # 清除标记值
# 保存带颜色标记的 Excel 文件
wb.save(input_excel)
print(f'甘特图成功添加并保存至 {input_excel}')
# 输入文件和表格名称
input_excel = '所有项目研发计划.xlsx'
sheet_name = '重点项目xxx'
create_gantt_chart(input_excel, sheet_name)
原文地址:https://blog.csdn.net/holyvslin/article/details/143876107
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!