首页 > 解决方案 > StyleFrame 插件不尊重 number_format

问题描述

无论我尝试过什么,StyleFrame 似乎都坚持以 DD/MM/YYYY 格式格式化所有日期。我试图让它们格式化为 MM/DD/YYYY。

我正在尝试使用 number_format 来控制它,但它似乎在生成的 Excel 文件中被完全忽略了。我已经能够成功应用许多其他类型的样式,例如字体大小、文本对齐方式和列宽,但它似乎忽略了 number_format。

具体来说,我正在尝试这样做:

sf = StyleFrame(exampleDataFrame)
sf.apply_column_style(cols_to_style=['Start Date', 'End Date'],
                  width=35, styler_obj=Styler(number_format='MM/DD/YYYY', font_size=10))

宽度和字体大小按预期应用,但不是日期格式。

标签: pythonpandasdataframestyleframe

解决方案


StyleFrame 似乎坚持在 DD/MM/YYYY 中格式化所有日期

这是正确的,并且是由于在造型过程的设计中存在一些疏忽。

在正式修复之前,一种可行的解决方法是覆盖日期(或日期时间)对象的基础默认样式。不幸的是,这不提供对特定列的控制,并且必须在创建StyleFrame对象之前完成。

我将为此创建一个 github 问题,以便将来对其进行研究。

import pandas as pd
from styleframe import StyleFrame, utils

df = pd.DataFrame({'a': ['11/12/2020']})
df['a'] = pd.to_datetime(df['a'])

orig_date_time_format = utils.number_formats.default_date_time_format
utils.number_formats.default_date_time_format = 'YYYYMMDD'
sf = StyleFrame(df)
sf.to_excel('test.xlsx').save()
utils.number_formats.default_date_time_format = orig_date_time_format

这将导致20201112在单元格中。


推荐阅读