Mot*_*tyl 5 python excel openpyxl
所以,给定:
dttm = datetime.datetime.strptime("2014-06-23 13:56:30", "%Y-%m-%d %H:%M:%S")
ws['A1'] = dttm
Run Code Online (Sandbox Code Playgroud)
excel的结果是将正确的日期时间写入单元格(您可以在输入公式的位置看到它).但是,单元格显示格式仅为MM/DD/YYYY.
我需要单元格显示"6/23/2014 13:56"而不是"6/23/2014".
如何明确格式化单元格以实现此目的?
谢谢!
@alecxe这个解决方案有效,正是我要求的.我希望能够像@Woodham一样保存解决方案.不幸的是,它引发了一个typeError(请参阅注释).有什么建议?
Sco*_*rts 13
我将此添加为新答案,因为我没有足够的声誉来为上面添加评论.格式化单元格的最简单方法是使用.number_format ="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'
Run Code Online (Sandbox Code Playgroud)
这是在openpyxl(2.2.2)中测试的
对于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
Run Code Online (Sandbox Code Playgroud)
另外,对于新NamedStyle
类,可以NamedStyle
在实例化字符串后通过字符串名称设置样式:
from openpyxl.styles import NamedStyle
NamedStyle(name='custom_datetime', number_format='DD/MM/YYYY HH:MM:MM')
ws['A1'].style = 'custom_datetime'
Run Code Online (Sandbox Code Playgroud)
此处的文档:https : //openpyxl.readthedocs.io/en/stable/styles.html
我相信您需要在openpyxl.styles.Style
要格式化的单元格上设置一个。
查看此处的文档,类似这样的内容应该有效:
dttm = datetime.datetime.strptime("2014-06-23 13:56:30", "%Y-%m-%d %H:%M:%S")
s = Style(number_format=NumberFormat('dd-mm-yyyy h:mm:ss'))
ws['A1'] = dttm
ws['A1'].styles = s
Run Code Online (Sandbox Code Playgroud)
更新: 不再使用样式类,解决方案请参阅此答案。