在工作中,大概率都遇到过这种崩溃时刻👇
Excel表的A列存着一堆中文格式的时长数据:1天3时20分、2时5分、10秒、3天8时……
领导一句**“把总时长统计出来”**,瞬间陷入绝望。
普通数字求和Excel一键搞定,但这种天、时、分、秒混合的中文时长,自带单位、格式不统一,Excel公式完全失效。
只能手动拆分、逐行换算、累加,几十条数据就要折腾十几分钟,还容易算错、漏算,返工率超高!
今天给大家分享一个专属办公Python脚本,完美解决这个痛点!无需复杂操作,一键读取Excel,自动解析「天/时/分/秒」,精准汇总总时长,3秒搞定人工半小时的工作量✨
01完整可直接运行源码
已优化注释、修复细节,复制即用,零基础也能上手👇
import pandas as pd
import re
from datetime import timedelta
defparse_duration(s) -> timedelta:
"""解析中文时长字符串,转换为标准时间格式,支持天/时/分/秒"""
# 处理空值、空白数据,避免报错
if pd.isna(s): return timedelta()
s = str(s).strip()
ifnot s: return timedelta()
# 初始化时间单位
days = hours = minutes = seconds = 0
# 正则匹配所有数字+时间单位组合
for num, unit in re.findall(r'(\d+)\s*(天|时|分|秒)', s):
n = int(num)
if unit == '天': days += n
elif unit == '时': hours += n
elif unit == '分': minutes += n
elif unit == '秒': seconds += n
return timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds)
defsum_from_excel(file_path, column="时长", sheet_name=0):
"""
批量汇总Excel中指定列的中文时长总时长
:param file_path: Excel文件路径
:param column: 需要统计的列名,默认“时长”
:param sheet_name: 工作表序号,默认第一个工作表
:return: 总时长
"""
# 读取Excel文件
df = pd.read_excel(file_path, sheet_name=sheet_name)
# 校验列名是否存在,给出明确提示
if column notin df.columns:
print(f" 列 '{column}' 不存在!可用列: {list(df.columns)}")
return timedelta()
# 遍历所有数据,累加总时长
total = sum(parse_duration(v) for v in df[column])
return total
# 适配输出格式,还原中文时长展示(补全原缺失函数)
defformat_duration(td: timedelta) -> str:
"""将timedelta格式化为中文天时分秒字符串"""
days = td.days
hours = td.seconds // 3600
minutes = (td.seconds % 3600) // 60
seconds = td.seconds % 60
res = ""
if days > 0: res += f"{days}天"
if hours > 0: res += f"{hours}时"
if minutes > 0: res += f"{minutes}分"
if seconds > 0: res += f"{seconds}秒"
return res if res else"0秒"
# ========== 核心使用方法(只需改路径!)==========
if __name__ == "__main__":
# 替换为你的Excel文件路径
total_time = sum_from_excel("sample.xlsx", column="时长")
# 输出格式化后的总时长
print(format_duration(total_time)) # 示例输出:44天15时43分7秒
02 脚本核心优势(办公党必存)
这款极简脚本,没有冗余功能,只为「高效汇总时长」而生:
容错性强:自动忽略空值、空白单元格,不报错、不中断
灵活适配:可自定义表格列名、工作表,适配任意Excel文件
03超简单使用教程(零基础秒会)
1、环境准备
首次使用先安装依赖库,终端执行:
pip install pandas openpyxl
2、修改2个参数即可运行
文件路径:把/sample.xlsx 替换成你的Excel文件绝对路径
列名:如果你的时长列不叫「时长」,修改 column="xxx" 为对应列名
3、运行效果
一键运行代码,终端直接输出格式化后的总时长,干净清晰: 示例结果:44天15时43分7秒
写在最后
办公效率的核心,从来不是“拼命加班”,而是用工具替代重复劳动。
这种枯燥、易错、重复性极强的时长统计工作,交给Python一键搞定,你只需要负责核对结果,省下的时间摸鱼、提升技能都更香!
代码已经全部调试完毕,直接复制即用,收藏起来,下次统计时长直接套用✨
需要更多Excel自动化、办公提效脚本,记得关注我,持续分享零基础办公黑科技!