找回密码
 立即注册
首页 业界区 业界 Excel处理控件Aspose.Cells教程:使用 Python 在 Excel ...

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

缣移双 4 天前
1.png

时间轴上的任务可视化有助于更好地管理项目。本文将学习如何使用Aspose.Cells for Python 通过 .NET在 Excel 中创建甘特图。只需几行代码,即可将简单的任务数据转换为动态清晰的可视化时间轴,非常适合用于报表、仪表板和规划文档。
Aspose.Cells官方试用版免费下载,请联系Aspose中国区官方授权经销商慧都科技
加入Aspose技术交流QQ群(1041253375),与更多小伙伴一起探讨提升开发技能。
用于甘特图的 Python Excel 库

Aspose.Cells for Python via .NET是一个功能强大的库,用于在 Python 中处理 Excel 文件。它允许您以编程方式创建、修改和格式化电子表格,包括甘特图等图表。
主要特点:


  • 完全控制 Excel 图表和数据。
  • 支持 XLSX、XLS、CSV 和 PDF。
  • 大文件时具有高性能。
  • 丰富的图表自定义选项。
首先,请使用以下命令安装该库:
 
  1. pip install aspose-cells
复制代码
您也可以从发布版本中下载它。
甘特图与堆叠条形图

Excel 和 Aspose.Cells 均未提供内置甘特图类型。但您仍然可以使用堆叠条形图并进行一些格式设置来创建甘特图。这是一种常用技术,Aspose.Cells 完全通过代码支持该技术。
Aspose.Cells 的功能

您可以通过执行以下操作轻松地在 Excel 中自动执行甘特图:

  • 输入任务数据(任务名称、开始日期和持续时间)。
  • 插入堆积条形图。
  • 使用一个系列作为“起始偏移量”(不可见),使用另一个系列作为“持续时间”(可见)。
  • 将图表格式化为甘特图。
这为您提供了一个可以动态生成的专业时间线。
示例任务数据

这是我们将使用的示例表:
任务开始日期期间起始偏移任务 12025年4月1日30任务 22025年4月3日62任务 32025年4月8日107任务 42025年4月18日317任务 52025年4月21日520使用 Python 在 Excel 中创建甘特图

按照以下步骤通过 .NET 使用 Aspose.Cells for Python 在 Excel 中创建甘特图:

  • 使用该类加载现有的 Excel 数据文件Workbook。
  • 获取第一个工作表workbook.worksheets[0]。
  • 添加堆积条形图以添加甘特图布局。
  • 添加两个数据系列:一个用于偏移量,一个用于持续时间。
  • 将任务名称设置为类别标签。
  • 调整样式和轴设置来格式化图表。
  • 使用该方法保存文件workbook.save()。
以下是执行所有这些步骤的 Python 代码片段:
  1. import aspose.cells as cells
  2. from aspose.pydrawing import Color
  3. # Load the Excel file
  4. workbook = cells.Workbook("sample-data.xlsx")
  5. sheet = workbook.worksheets.get(0)
  6. # Add Gantt Chart
  7. chart_index = sheet.charts.add(cells.charts.ChartType.BAR_STACKED, 7, 0, 30, 10)
  8. chart = sheet.charts[chart_index]
  9. chart.title.text = "Gantt Chart"
  10. # Add offset and duration as series
  11. chart.n_series.add("D2:D6", True)  # Start Offset
  12. chart.n_series.add("C2:C6", True)  # Duration
  13. # Set task names as categories
  14. chart.n_series.category_data = "A2:A6"
  15. # Make offset bars invisible
  16. chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE
  17. # Style duration bars
  18. chart.n_series[1].area.formatting = cells.charts.FormattingType.CUSTOM
  19. chart.n_series[1].area.foreground_color = Color.steel_blue
  20. chart.n_series[1].data_labels.show_value = True
  21. # Axis settings
  22. chart.category_axis.is_plot_order_reversed = True
  23. chart.category_axis.title.text = "Tasks"
  24. chart.value_axis.title.text = "Days from Start"
  25. chart.value_axis.major_grid_lines.is_visible = True
  26. # Hide legend
  27. chart.show_legend = False
  28. # Resize chart (optional)
  29. chart.chart_object.width = 700
  30. chart.chart_object.height = 400
  31. # Save the result
  32. workbook.save("GanttChartResult.xlsx", cells.SaveFormat.XLSX)
复制代码
这将生成包含您的任务数据的干净的甘特图。
2.jpeg

自定义甘特图

您可以使用以下可用选项自定义甘特图:
条形颜色
为持续时间条设置纯色:
  1. chart.n_series[1].area.foreground_color = Color.steel_blue
复制代码
透明偏移
使偏移(不可见)条完全透明。
  1. chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE
复制代码
任务顺序
反转 Y 轴以从上到下显示任务:
  1. chart.category_axis.is_plot_order_reversed = True
复制代码
数据标签
在每个任务栏上直接显示持续时间:
  1. chart.n_series[1].data_labels.show_value = True
复制代码
图例控制
删除或重新定位图表图例。
  1. chart.show_legend = False
  2. # Or reposition:
  3. chart.legend.position = cells.charts.LegendPositionType.BOTTOM
复制代码
设置自定义栏颜色
  1. chart.n_series[1].points[0].area.foreground_color = Color.green
  2. chart.n_series[1].points[1].area.foreground_color = Color.red
复制代码
调整图表大小
  1. chart.chart_object.width = 700 chart.chart_object.height = 400
复制代码
导出为 PDF 或图像
  1. workbook.save("gantt_chart.pdf", cells.SaveFormat.PDF) chart.to_image("chart.png")
复制代码
以下 Python 代码片段应用了上面提到的一些自定义:
  1. import aspose.cells as cells
  2. from aspose.pydrawing import Color
  3. import datetime
  4. # Initialize workbook and worksheet
  5. workbook = cells.Workbook()
  6. sheet = workbook.worksheets.get(0)
  7. sheet.name = "Gantt Data"
  8. # Project start date
  9. project_start = datetime.date(2025, 4, 1)
  10. # Headers
  11. sheet.cells.get("A1").put_value("Task")
  12. sheet.cells.get("B1").put_value("Start Date")
  13. sheet.cells.get("C1").put_value("Duration (Days)")
  14. sheet.cells.get("D1").put_value("Start Offset")
  15. sheet.cells.get("E1").put_value("End Date")
  16. # Task data: [Task Name, Start Date, Duration]
  17. tasks = [
  18.     ["Task 1", "2025-04-01", "3"],
  19.     ["Task 2", "2025-04-03", "6"],
  20.     ["Task 3", "2025-04-08", "10"],
  21.     ["Task 4", "2025-04-18", "3"],
  22.     ["Task 5", "2025-04-21", "5"]
  23. ]
  24. # Fill data into the sheet
  25. for i, task in enumerate(tasks):
  26.     row = i + 2  # Start from row 2
  27.     sheet.cells.get(row, 0).put_value(task[0])  # Task Name
  28.     sheet.cells.get(row, 1).put_value(datetime.datetime.strptime(task[1], "%Y-%m-%d").date())  # Start Date
  29.     sheet.cells.get(row, 2).put_value(int(task[2]))  # Duration
  30.     # Offset and End Date formulas
  31.     sheet.cells.get(row, 3).formula = f"=B{row + 1} - DATE(2025,4,1)"  # Offset
  32.     sheet.cells.get(row, 4).formula = f"=B{row + 1} + C{row + 1}"  # End Date
  33. # Auto-fit columns
  34. sheet.auto_fit_columns()
  35. # Add Gantt chart
  36. chart_index = sheet.charts.add(cells.charts.ChartType.BAR_STACKED, 10, 0, 30, 10)
  37. chart = sheet.charts[chart_index]
  38. chart.title.text = "Project Gantt Chart"
  39. # Add data series: Offset (invisible), Duration (visible)
  40. chart.n_series.add("D2:D6", True)  # Offset
  41. chart.n_series.add("C2:C6", True)  # Duration
  42. # Set task names as category labels
  43. chart.n_series.category_data = "A2:A6"
  44. # Make offset bars invisible
  45. chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE
  46. # Color each task bar differently
  47. duration_series = chart.n_series[1]
  48. for i in range(duration_series.points.count):
  49.     red = 100 + i * 30
  50.     duration_series.points[i].area.foreground_color = Color.from_argb(255, red, 150)
  51. # Show data labels on duration bars
  52. duration_series.data_labels.show_value = True
  53. # Axis configuration
  54. chart.category_axis.title.text = "Tasks"
  55. chart.category_axis.is_plot_order_reversed = True
  56. chart.value_axis.title.text = "Days from Project Start"
  57. chart.value_axis.major_grid_lines.is_visible = True
  58. chart.value_axis.min_value = 0
  59. chart.value_axis.major_unit = 5.0
  60. # Hide legend
  61. chart.show_legend = False
  62. # Resize chart
  63. chart.chart_object.width = 700
  64. chart.chart_object.height = 400
  65. # Save output
  66. workbook.save("CustomizedGanttChart.xlsx", cells.SaveFormat.XLSX)
复制代码
3.jpeg
 
总结

使用 Aspose.Cells for Python 通过 .NET 在 Excel 中创建甘特图既简单又高效。它让您可以完全控制图表设计和 Excel 自动化。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册