Xlsxwriter 自定义列格式问题
Xlsxwriter Custom Column Formatting issue
我确信有一种更有效的方法来编写代码,但我遇到的问题是在我的列的数据框 2 中(dtypes 是以 yyyy-mm-dd 格式表示日期的对象)。当我使用 xlsxWriter 时,其他所有内容都完全按照我的需要出现,除了具有日期的两列是 excel 中的 'custom' 列类型并且没有格式化(顶部对齐也不是大小 8)。 excel 中的其余列为 'general' 且格式正确。
任何建议将不胜感激
writer=pd.ExcelWriter("file.xlsx", engine='xlsxwriter')
df_summary.to_excel(writer, (sheet_name)='Sheet1', startrow=15, header=True, index=False)
workbook=writer.book
worksheet=writer.sheets['Sheet1']
worksheet.set_column('A:O', 15)
worksheet.set_column('P:R', 30)
workbook.formats[0].set_font_size(8)
workbook.formats[0].set_text_wrap()
workbook.formats[0].set_align('top')
bg_format=workbook.add_format({'bg_color': '#cccccc'})
worksheet.set_row(15, cell_format=(bg_format))
writer.save()
如果您的日期列是对象,您首先需要将它们转换为日期时间。然后,您需要在使用 xlsxwriter 创建 writer 对象时指定默认日期格式(有关更多信息,请查看 here)。
这是一个演示此操作的示例:
import pandas as pd
df = pd.DataFrame({'Date': ['04/23/2020','04/24/2020',
'04/25/2020','04/26/2020']})
df['Date'] = pd.to_datetime(df['Date'])
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter',
datetime_format='m/d/yyyy')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
writer.save()
编辑
import pandas as pd
df = pd.DataFrame({'Date': ['04/23/2020','04/24/2020',
'04/25/2020','04/26/2020']})
df['Date'] = pd.to_datetime(df['Date'])
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
cellFormat = workbook.add_format({'font_size': 8,
'font_name': 'Calibri',
'valign': 'top',
'align': 'left',
'num_format': 'm/d/yyyy'})
for row in range(1,5):
worksheet.write(row, 0, df.iloc[row-1,0], cellFormat)
writer.save()
我确信有一种更有效的方法来编写代码,但我遇到的问题是在我的列的数据框 2 中(dtypes 是以 yyyy-mm-dd 格式表示日期的对象)。当我使用 xlsxWriter 时,其他所有内容都完全按照我的需要出现,除了具有日期的两列是 excel 中的 'custom' 列类型并且没有格式化(顶部对齐也不是大小 8)。 excel 中的其余列为 'general' 且格式正确。 任何建议将不胜感激
writer=pd.ExcelWriter("file.xlsx", engine='xlsxwriter')
df_summary.to_excel(writer, (sheet_name)='Sheet1', startrow=15, header=True, index=False)
workbook=writer.book
worksheet=writer.sheets['Sheet1']
worksheet.set_column('A:O', 15)
worksheet.set_column('P:R', 30)
workbook.formats[0].set_font_size(8)
workbook.formats[0].set_text_wrap()
workbook.formats[0].set_align('top')
bg_format=workbook.add_format({'bg_color': '#cccccc'})
worksheet.set_row(15, cell_format=(bg_format))
writer.save()
如果您的日期列是对象,您首先需要将它们转换为日期时间。然后,您需要在使用 xlsxwriter 创建 writer 对象时指定默认日期格式(有关更多信息,请查看 here)。
这是一个演示此操作的示例:
import pandas as pd
df = pd.DataFrame({'Date': ['04/23/2020','04/24/2020',
'04/25/2020','04/26/2020']})
df['Date'] = pd.to_datetime(df['Date'])
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter',
datetime_format='m/d/yyyy')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
writer.save()
编辑
import pandas as pd
df = pd.DataFrame({'Date': ['04/23/2020','04/24/2020',
'04/25/2020','04/26/2020']})
df['Date'] = pd.to_datetime(df['Date'])
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
cellFormat = workbook.add_format({'font_size': 8,
'font_name': 'Calibri',
'valign': 'top',
'align': 'left',
'num_format': 'm/d/yyyy'})
for row in range(1,5):
worksheet.write(row, 0, df.iloc[row-1,0], cellFormat)
writer.save()