使用 xlsx writer 编写自定义日期格式
Using xlsx writer to write custom date format
我正在将数据框写入 excel 并使用 xlsx writer 将我的日期列格式化为自定义格式,但 excel 始终包含日期时间值并忽略我的代码中指定的自定义格式.这是代码:
writer = ExcelWriter(path+'test.xlsx', engine='xlsxwriter')
workbook = writer.book
df.to_excel(writer,sheet_name='sheet1', index=False, startrow = 1, header=False)
worksheet1 = writer.sheets['sheet1']
fmt = workbook.add_format({'num_format':'d-mmm-yy'})
worksheet1.set_column('C:C', None, fmt)
# Adjusting column width
worksheet1.set_column(0, 20, 12)
# Adding back the header row
column_list = df.columns
for idx, val in enumerate(column_list):
worksheet1.write(0, idx, val)
writer.save()
这里我想要 C 列的 'd-mmm-yy' 格式,但导出的 excel 包含日期时间值。我也不想使用 strftime 将我的列转换为字符串以确保在 excel.
中轻松进行日期过滤
Excel 输出:
这没有按预期工作的原因是 Pandas 使用带有日期时间对象的默认日期时间格式,并且它在单元格级别应用此格式。在 XlsxWriter 和 Excel 中,单元格格式会覆盖列格式,因此您的列格式无效。
最简单的处理方法是在 pd.ExcelWriter()
中指定 Pandas 日期(或日期时间)格式作为参数:
import pandas as pd
from datetime import date
df = pd.DataFrame({'Dates': [date(2020, 2, 1),
date(2020, 2, 2),
date(2020, 2, 3),
date(2020, 2, 4),
date(2020, 2, 5)]})
writer = pd.ExcelWriter('pandas_datetime.xlsx',
engine='xlsxwriter',
date_format='d-mmm-yy')
df.to_excel(writer, sheet_name='Sheet1')
writer.save()
输出:
另请参阅 XlsxWriter 文档中的 Pandas Datetime example。
我正在将数据框写入 excel 并使用 xlsx writer 将我的日期列格式化为自定义格式,但 excel 始终包含日期时间值并忽略我的代码中指定的自定义格式.这是代码:
writer = ExcelWriter(path+'test.xlsx', engine='xlsxwriter')
workbook = writer.book
df.to_excel(writer,sheet_name='sheet1', index=False, startrow = 1, header=False)
worksheet1 = writer.sheets['sheet1']
fmt = workbook.add_format({'num_format':'d-mmm-yy'})
worksheet1.set_column('C:C', None, fmt)
# Adjusting column width
worksheet1.set_column(0, 20, 12)
# Adding back the header row
column_list = df.columns
for idx, val in enumerate(column_list):
worksheet1.write(0, idx, val)
writer.save()
这里我想要 C 列的 'd-mmm-yy' 格式,但导出的 excel 包含日期时间值。我也不想使用 strftime 将我的列转换为字符串以确保在 excel.
中轻松进行日期过滤Excel 输出:
这没有按预期工作的原因是 Pandas 使用带有日期时间对象的默认日期时间格式,并且它在单元格级别应用此格式。在 XlsxWriter 和 Excel 中,单元格格式会覆盖列格式,因此您的列格式无效。
最简单的处理方法是在 pd.ExcelWriter()
中指定 Pandas 日期(或日期时间)格式作为参数:
import pandas as pd
from datetime import date
df = pd.DataFrame({'Dates': [date(2020, 2, 1),
date(2020, 2, 2),
date(2020, 2, 3),
date(2020, 2, 4),
date(2020, 2, 5)]})
writer = pd.ExcelWriter('pandas_datetime.xlsx',
engine='xlsxwriter',
date_format='d-mmm-yy')
df.to_excel(writer, sheet_name='Sheet1')
writer.save()
输出:
另请参阅 XlsxWriter 文档中的 Pandas Datetime example。