- Python XlsxWriter 教程
- Python XlsxWriter - 首页
- Python XlsxWriter - 概述
- Python XlsxWriter - 环境设置
- Python XlsxWriter - Hello World
- Python XlsxWriter - 重要类
- Python XlsxWriter - 单元格表示法与范围
- Python XlsxWriter - 已定义名称
- Python XlsxWriter - 公式与函数
- Python XlsxWriter - 日期和时间
- Python XlsxWriter - 表格
- Python XlsxWriter - 应用筛选器
- Python XlsxWriter - 字体与颜色
- Python XlsxWriter - 数字格式
- Python XlsxWriter - 边框
- Python XlsxWriter - 超链接
- Python XlsxWriter - 条件格式
- Python XlsxWriter - 添加图表
- Python XlsxWriter - 图表格式
- Python XlsxWriter - 图表图例
- Python XlsxWriter - 条形图
- Python XlsxWriter - 折线图
- Python XlsxWriter - 饼图
- Python XlsxWriter - 迷你图
- Python XlsxWriter - 数据验证
- Python XlsxWriter - 大纲与分组
- Python XlsxWriter - 冻结与分割窗格
- Python XlsxWriter - 隐藏/保护工作表
- Python XlsxWriter - 文本框
- Python XlsxWriter - 插入图片
- Python XlsxWriter - 页面设置
- Python XlsxWriter - 页眉与页脚
- Python XlsxWriter - 单元格批注
- Python XlsxWriter - 与Pandas协同工作
- Python XlsxWriter - VBA宏
- Python XlsxWriter 有用资源
- Python XlsxWriter - 快速指南
- Python XlsxWriter - 有用资源
- Python XlsxWriter - 讨论
Python XlsxWriter - 日期与时间
在Excel中,日期被存储为实数,以便能够用于计算。默认情况下,1900年1月1日(称为纪元)被视为1,因此2022年1月28日对应于44589。类似地,时间表示为数字的小数部分,即一天的百分比。因此,2022年1月28日11:00对应于44589.45833。
set_num_format() 方法
由于Excel中的日期或时间就像任何其他数字一样,要将数字显示为日期,必须对其应用Excel数字格式。使用set_num_format()方法(Format对象)并使用适当的格式。
以下代码片段将数字显示为“dd/mm/yy”格式。
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()
输出
在Excel软件中,工作表如下所示:
write_datetime() 和 strptime()
XlsxWriter 的 Worksheet 对象也有write_datetime()方法,在处理使用Python标准库的datetime模块获得的日期和时间对象时非常有用。
strptime()方法根据给定的格式返回从字符串解析的datetime对象。一些用于格式化字符串的代码如下:
%a |
缩写的星期几名称 |
Sun, Mon |
%A |
完整的星期几名称 |
Sunday, Monday |
%d |
月份中的天数,为零填充的十进制数 |
01, 02 |
%-d |
月份中的天数,为十进制数 |
1, 2.. |
%b |
缩写的月份名称 |
Jan, Feb |
%m |
月份,为零填充的十进制数 |
01, 02 |
%-m |
月份,为十进制数 |
1, 2 |
%B |
完整的月份名称 |
January, February |
%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 |
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()方法将此datetime对象写入工作表。
示例
在以下示例中,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打开时,工作表如下所示: