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

时间轴上的任务可视化有助于更好地管理项目。本文将学习如何使用Aspose.Cells for Python 通过 .NET在 Excel 中创建甘特图。只需几行代码,即可将简单的任务数据转换为动态清晰的可视化时间轴,非常适合用于报表、仪表板和规划文档。

Aspose.Cells官方试用版免费下载

用于甘特图的 Python Excel 库

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

主要特点:

  • 完全控制 Excel 图表和数据。
  • 支持 XLSX、XLS、CSV 和 PDF。
  • 大文件时具有高性能。
  • 丰富的图表自定义选项。

首先,请使用以下命令安装该库:

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 代码片段:

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_index]
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[0].area.formatting = cells.charts.FormattingType.NONE# Style duration bars
chart.n_series[1].area.formatting = cells.charts.FormattingType.CUSTOM
chart.n_series[1].area.foreground_color = Color.steel_blue
chart.n_series[1].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)

这将生成包含您的任务数据的干净的甘特图。

自定义甘特图

您可以使用以下可用选项自定义甘特图:

条形颜色

为持续时间条设置纯色:

chart.n_series[1].area.foreground_color = Color.steel_blue

透明偏移

使偏移(不可见)条完全透明。

chart.n_series[0].area.formatting = cells.charts.FormattingType.NONE

任务顺序

反转 Y 轴以从上到下显示任务:

chart.category_axis.is_plot_order_reversed = True

数据标签

在每个任务栏上直接显示持续时间:

chart.n_series[1].data_labels.show_value = True

图例控制

删除或重新定位图表图例。

chart.show_legend = False# Or reposition: 
chart.legend.position = cells.charts.LegendPositionType.BOTTOM

设置自定义栏颜色

chart.n_series[1].points[0].area.foreground_color = Color.green
chart.n_series[1].points[1].area.foreground_color = Color.red

调整图表大小

chart.chart_object.width = 700 chart.chart_object.height = 400 

导出为 PDF 或图像

workbook.save("gantt_chart.pdf", cells.SaveFormat.PDF) chart.to_image("chart.png") 

以下 Python 代码片段应用了上面提到的一些自定义:

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: [Task Name, Start Date, Duration]
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 2sheet.cells.get(row, 0).put_value(task[0])  # Task Namesheet.cells.get(row, 1).put_value(datetime.datetime.strptime(task[1], "%Y-%m-%d").date())  # Start Datesheet.cells.get(row, 2).put_value(int(task[2]))  # Duration# Offset and End Date formulassheet.cells.get(row, 3).formula = f"=B{row + 1} - DATE(2025,4,1)"  # Offsetsheet.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_index]
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[0].area.formatting = cells.charts.FormattingType.NONE# Color each task bar differently
duration_series = chart.n_series[1]
for i in range(duration_series.points.count):red = 100 + i * 30duration_series.points[i].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)

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/news/914803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RK3568 平台I2C协议与AGS10驱动开发】

RK3568 平台I2C协议与AGS10驱动开发一、I2C 总线协议基础二、I2C 通信过程详解三、AGS10 传感器概述四、AGS10驱动开发1. 硬件连接2. 设备树(DTS)配置3. 内核驱动开发五、调试与验证六、总结引言在嵌入式系统开发中,传感器数据采集是常见需求…

arm版本的ubuntu安装git或者vim等方法

看起来你在基于 ARM 的 Ubuntu 系统上安装 Vim 时遇到了问题,错误提示为“E: 无法定位软件包 vim”。这通常是因为系统的软件包列表未更新,或者该软件包在你检查的标准软件源中不可用。以下是通常可以解决这个问题的方法:1. 更新软件包列表“…

MFC扩展库BCGControlBar Pro v36.2新版亮点:可视化设计器升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar专业版 v36.2已全新发布了,在这个版本中添加了一个新的扩展器控件、改进了网格和报表…

小杰学C(eleven day)——莫道浮云终蔽日,总有云开雾散时。

1.结构体(1)内容定义:1.用户自定义的数据类型2.可以包含若干不同数据类型(可相同)的成员变量3.这些数据项组合起来反应某一信息格式:struct 结构体名 (用户自定义的数据类型){数据类型 成员变量1;数据类型 …

海豚远程控制APP:随时随地,轻松掌控手机

在快节奏的现代生活中,我们常常需要在不同设备之间切换,管理手机也变得越来越重要。无论是远程办公、远程学习还是日常生活中对手机的管理,一款高效、便捷的远程控制软件都能极大地提升我们的效率。海豚远程控制APP正是这样一款功能强大的手机…

Linux/Ubuntu安装go

Linux/Ubuntu安装go1. 首先移除旧版本(如有):2. 下载Go 1.23.9安装包:3. 解压到系统目录:4. 设置环境变量(添加到~/.profile或~/.bashrc文件末尾):5.使环境变量生效:6. 验…

教程:如何快速查询 A 股实时 K线和5档盘口

实时行情数据是量化交易策略、看板系统和交易决策系统的重要输入。本文将以 Infoway API 提供的 WebSocket API 为例,教你如何使用 Python 快速接入并获取 A 股的实时 K线数据 和 盘口数据。一、准备工作安装 WebSocket 库:pip install websockets二、查…

施易德门店管理系统应用案例分析:零售女装品牌伊芙丽的全球化布局

在零售品牌的全球化进程中,如何应对不同市场的合规要求、实现本地化精细化运营,是企业面临的重要课题。施易德(Cegid)门店管理系统凭借40年的全球零售数字化服务经验,为多个品牌的海外拓展提供了支持。其中&#xff0c…

安全初级作业2

一、作业要求 1、xss-labs 1~8关 2、python实现自动化sql布尔育注代码优化(二分查找) 二、操作过程 (一)xss-labs 1~8关 1、前期准备 (1)打开小皮面板,并启动Apache和MySQL (2)将 xss-labs…

多模态大语言模型arxiv论文略读(157)

Automatic Evaluation for Text-to-image Generation: Task-decomposed Framework, Distilled Training, and Meta-evaluation Benchmark ➡️ 论文标题:Automatic Evaluation for Text-to-image Generation: Task-decomposed Framework, Distilled Training, and M…

面试150——数组字符串

88. 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。倒序比较,避免覆…

深入理解设计模式:命令模式详解

在软件开发中,我们经常遇到需要将"请求"或"操作"封装成对象的情况。比如,GUI中的按钮点击、遥控器控制家电、事务系统中的操作回滚等场景。命令模式(Command Pattern)正是为解决这类问题而生的设计模式。本文…

自己写的 MyHttpServlet 和直接继承 HttpServlet 的区别

继承你自己写的 MyHttpServlet 和直接继承 HttpServlet 的区别如下:1. 继承 HttpServlet(官方推荐用法)HttpServlet 是 Java EE 官方提供的 Servlet 基类,已经实现了 Servlet 接口的大部分方法。它内部已经实现了 service() 方法&…

python库 maya 库的各种案例的使用详解(人性化的日期时间处理)

文章目录 一、Maya库概述 1.1 maya介绍 1.2 安装 maya 1.3 注意事项 二、基本使用 2.1 创建 MayaDT 对象 2.2 格式化输出 2.3 时间运算 三、高级使用 3.1 时区处理 3.2 时间间隔 3.3 网络时间获取 四、实际应用示例 4.1 日志时间处理 4.2 会议时间提醒 4.3 国际化时间显示 5. M…

企业选择大带宽服务器租用的原因有哪些?

大带宽服务器作为各个行业使用较多的服务器类型,可以为企业提供更高的数据传输速率,极大缩短文件上传与下载时间,对于大型文件,大带宽服务器能够将时间大幅缩减至数分钟或数小时,提高企业整体的工作效率。大带宽服务器…

使用canal同步分库分表数据,到 Elasticsearch

作者:小凯 沉淀、分享、成长,让自己和他人都能有所收获! 本文的宗旨在于通过简单干净实践的方式教会读者,配置出一套 Canal 工具服务,来同步分库分表的数据到 Elasticsearch 文件夹系统中。同时在 SpringBoot 工程中&a…

气候为何愈演愈“炙” — 未来五年高温趋势与 AI 气象大模型的突破性价值

早、更准 代表性模型 主要特征 应用进展 GraphCast(DeepMind) 10 天全球预报;0.25 分辨率;< 1 min 推理 90 % 指标超 ECMWF HRES,已用于极端风暴提前锁定Google DeepMind MetNet-3(Google Research) 1–4 km 分辨率;2 min 时序;24 h 区域精细预报 美东、欧洲已在 G…

LVS四种模式及部署NAT、DR模式集群

1、lvs简介LVS:Linux Virtual Server&#xff0c;负载调度器&#xff0c;内核集成&#xff0c;章文嵩&#xff0c;阿里四层SLB(ServerLoadBalance)是基于LVSkeepalived实现LVS 官网: http://www.linuxvirtualserver.org/LVS 相关术语VS: Virtual Server&#xff0c;负责调度RS:…

【Linux】Ubuntu22.04安装zabbix

官方文档&#xff1a;zabbix安装文档 环境如下 环境版本nginx1.26.3zabbix7.0.16mysql8.0.41 安装nginx和mysql 一键部署脚本 部署zabbix #!/bin/bash wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0ubuntu22.04_…

C++ - 仿 RabbitMQ 实现消息队列--sqlite与gtest快速上手

目录 SQLite 什么是 SQLite 为什么要用 SQLite SQLite3 C/C API 介绍 SQLite3 C/C API 使用 GTest GTest 是什么 GTest 使用 TEST 宏 断言 事件机制 全局事件 TestSuite 事件 SQLite 什么是 SQLite SQLite 是一个进程内的轻量级数据库&#xff0c;它实现了自给自足…