- 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 - 文本框
- 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 点对应于 44589.45833。
set_num_format() 方法
由于 Excel 中的日期或时间与任何其他数字一样,因此要将数字显示为日期,您必须对其应用 Excel 数字格式。使用Format 对象的set_num_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 ()方法从根据给定格式解析的字符串中返回日期时间对象。下面给出了一些用于格式化字符串的代码 -
%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 |
%我 |
小时(12 小时制),以零填充的十进制数 |
01, 12 |
%-我 |
十进制数形式的小时(12 小时制) |
1, 12 |
%p |
区域设置的 AM 或 PM |
上午下午 |
%M |
以零填充的十进制数形式的分钟 |
01, 59 |
%-M |
以十进制表示的分钟 |
1, 59 |
%S |
第二个以零填充的十进制数 |
01, 59 |
%-S |
第二位十进制数 |
1, 59 |
%C |
区域设置的适当日期和时间表示 |
2022 年 9 月 30 日星期一 07:06:05 |
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 打开时,工作表如下所示。