如何在Excel中使用openpyxl格式化'yyyy-mm-dd hh:mm:ss'格式的日期时间单元格
所以,给定的内容是:
dttm = datetime.datetime.strptime("2014-06-23 13:56:30", "%Y-%m-%d %H:%M:%S")
ws['A1'] = dttm
在Excel中,结果是正确的日期和时间被写入了单元格(你可以在输入公式的地方看到它)。但是,单元格的显示格式只有MM/DD/YYYY。
我希望单元格显示为“6/23/2014 13:56”,而不仅仅是“6/23/2014”。
我该如何明确地格式化单元格来实现这个呢?
谢谢!
编辑
@alecxe 这个解决方案有效,正是我所需要的。我希望能够像@Woodham的解决方案那样保存样式。不幸的是,这引发了一个类型错误(见评论)。有什么建议吗?
6 个回答
1
我发现这样做有效。虽然使用了number_format,但在放入Excel工作簿时,它似乎能识别指定的日期格式。
import datetime
date = datetime.date(2020, 2, 24) # python datetime format is yyyy mm dd
ws.cell(row=[row_ref], column=[col_ref], value=date)
ws.cell(row=[row_ref], column=[col_ref]).number_format = 'dd/mm/yy'
1
在openpyxl 2.3.4版本中,无法直接导入NumberFormat这个东西,但下面这段代码可以用来设置样式:
from openpyxl.styles import Style
…
date_style = Style(number_format="DD/MM/YYYY HH:MM:MM")
ws['A1'].style = date_style
22
在openpyxl 2.4.5版本中,你将不能再使用NumberFormat
和Style
,而需要使用NamedStyle
。下面是一些示例用法:
from openpyxl.styles import NamedStyle
date_style = NamedStyle(name='datetime', number_format='DD/MM/YYYY HH:MM:MM')
ws['A1'].style = date_style
另外,使用新的NamedStyle
类后,你可以在创建NamedStyle
实例后,通过字符串名称来设置样式:
from openpyxl.styles import NamedStyle
NamedStyle(name='custom_datetime', number_format='DD/MM/YYYY HH:MM:MM')
ws['A1'].style = 'custom_datetime'
相关文档可以在这里找到:https://openpyxl.readthedocs.io/en/stable/styles.html
24
格式化单元格最简单的方法就是使用 .number_format = "格式",就像下面这样:
value = datetime.datetime.strptime("2014-06-23 13:56:30", "%Y-%m-%d %H:%M:%S")
cell = ws['A1']
cell.value = value
cell.number_format = 'YYYY MMM DD'
这个方法是在 openpyxl (2.2.2) 中测试过的。