如何用Python的xlsxwriter以HHHH:MM格式输出时长
解决XlsxWriter输出超过24小时时长的问题
问题核心在于XlsxWriter对timedelta的处理逻辑和Excel的时间格式规则:
- Excel的日期时间数值以天为单位,1代表一整天(86400秒),
write_datetime会把timedelta解析为相对于起始日期的时间,超过24小时的部分会被当作天数,显示时只保留单日的小时余数,导致24小时被截断为0。 - 要显示累计小时数(如24:01),必须使用Excel的特殊数字格式
[h]:mm,方括号表示统计累计小时而非单日小时。
修正后的代码如下:
import xlsxwriter xlsx_filename = 'foo.xlsx' workbook = xlsxwriter.Workbook(xlsx_filename) worksheet = workbook.add_worksheet() # 定义显示累计小时的格式 duration_format = workbook.add_format({'num_format': '[h]:mm'}) time_seconds = 86460 # 1天1分钟 # 将秒数转换为Excel的时间数值(以天为单位) excel_time_value = time_seconds / 86400 # 用write_number写入数值并应用格式 worksheet.write_number(0, 0, excel_time_value, duration_format) workbook.close()
关键说明:
[h]:mm是Excel原生支持的格式,专门用于显示超过24小时的累计时长,同理[m]:ss可用于显示超过60分钟的累计分钟数。- 直接将总秒数除以86400得到Excel可识别的时间数值,规避了
timedelta被自动解析为日期天数的问题。
内容的提问来源于stack exchange,提问作者Reuben Thomas
相关产品推荐
相关产品推荐

