Python XlsxWriter – 日期和时间

Python XlsxWriter – 日期和时间

在Excel中,日期被存储为实数,这样它们就可以被用于计算。默认情况下,1900年1月1日(称为纪元)被处理为1,因此2022年1月28日对应的是44589。同样地,时间被表示为数字的小数部分,作为一天的百分比。因此,2022年1月28日11.00对应于44589.45833。

Python XlsxWriter - 日期和时间

set_num_format()方法

由于日期或时间在Excel中就像其他数字一样,为了将数字显示为日期,你必须对其应用Excel数字格式。使用 Format 对象的 set_num_format() 方法,使用适当的格式化。

下面的代码片段以 “日/月/年 “格式显示一个数字。

num = 44589
format1 = wb.add_format()
format1.set_num_format('dd/mm/yy')
ws.write('B2', num, format1)

num_format参数

另外, add_format() 方法的 num_format 参数可以被设置为所需的格式。

format1 = wb.add_format({'num_format':'dd/mm/yy'})
ws.write('B2', num, format1)

例子

下面的代码显示了各种日期格式的数字。

import xlsxwriter

wb = xlsxwriter.Workbook('hello.xlsx')
ws = wb.add_worksheet()

num=44589
ws.write('A1', num)

format2 = wb.add_format({'num_format': 'dd/mm/yy'})
ws.write('A2', num, format2)

format3 = wb.add_format({'num_format': 'mm/dd/yy'})
ws.write('A3', num, format3)

format4 = wb.add_format({'num_format': 'd-m-yyyy'})
ws.write('A4', num, format4)

format5 = wb.add_format({'num_format': 'dd/mm/yy hh:mm'})
ws.write('A5', num, format5)

format6 = wb.add_format({'num_format': 'd mmm yyyy'})
ws.write('A6', num, format6)

format7 = wb.add_format({'num_format': 'mmm d yyyy hh:mm AM/PM'})
ws.write('A7', num, format7)

wb.close()

write_datetime() 和 strptime()

XlsxWriter的工作表对象也有 write_datetime() 方法,在处理用Python标准库的datetime模块获得的日期和时间对象时非常有用。

strptime() 方法从一个根据给定格式解析的字符串中返回 日期时间 对象。下面给出了一些用于格式化字符串的代码。

%a 缩略的工作日名称 星期日,星期一
%A 完整的工作日名称 星期日,星期一
%d 以零填充的小数形式表示的月份的日期 01, 02
%-d 以小数形式表示的月日 1, 2..
%b 缩略的月份名称 一月,二月
%m 作为零填充的小数的月份 01, 02
%-m 月份为小数点后的数字 1, 2
%B 完整的月份名称 一月,二月
%y 不含世纪的年份,作为零填充的十进制数字 99, 00
%-y 不含世纪的年份,作为小数的数字 0, 99
%Y 以世纪为小数的年份 2022, 1999
%H 小时(24小时时钟),作为一个零填充的十进制数字 01, 23
%-H 小时(24小时制时钟)为十进制数 1, 23
%I 小时(12小时的时钟)作为一个零填充的小数 01, 12
%-I 小时(12小时制时钟)为十进制数 1, 12
%p 地区性的上午或下午 AM, PM
%M 分钟为零填充的十进制数字 01, 59
%-M 分钟为小数点后的数字 1, 59
% S 秒,作为一个零填充的十进制数字 01, 59
%-S 第二位为小数 1, 59
%c 当地语言的适当日期和时间表示 Mon Sep 30 07:06:05 2022年

strptime() 方法的使用方法如下 –

>>> from datetime import datetime
>>> dt="Thu February 3 2022 11:35:5"
>>> code="%a %B %d %Y %H:%M:%S"
>>> datetime.strptime(dt, code)
datetime.datetime(2022, 2, 3, 11, 35, 5)

现在可以用 write_datetime() 方法将这个 日期时间 对象写进工作表。

例子

在下面的例子中, 日期时间 对象以不同的格式被写入。

import xlsxwriter
from datetime import datetime
wb = xlsxwriter.Workbook('hello.xlsx')
worksheet = wb.add_worksheet()

dt="Thu February 3 2022 11:35:5"
code="%a %B %d %Y %H:%M:%S"
obj=datetime.strptime(dt, code)
date_formats = (
   'dd/mm/yy',
   'mm/dd/yy',
   'dd m yy',
   'd mm yy',
   'd mmm yy',
   'd mmmm yy',
   'd mmmm yyy',
   'd mmmm yyyy',
   'dd/mm/yy hh:mm',
   'dd/mm/yy hh:mm:ss',
   'dd/mm/yy hh:mm:ss.000',
   'hh:mm',
   'hh:mm:ss',
   'hh:mm:ss.000',
)
worksheet.write('A1', 'Formatted date')
worksheet.write('B1', 'Format')
row = 1

for fmt in date_formats:
   date_format = wb.add_format({'num_format': fmt, 'align': 'left'})
   worksheet.write_datetime(row, 0, obj, date_format)
   worksheet.write_string(row, 1, fmt)
   row += 1
wb.close()

输出

当用Excel打开时,工作表显示如下。

Python XlsxWriter - 日期和时间

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程