简体   繁体   English

Xlsxwriter 自定义列格式问题

[英]Xlsxwriter Custom Column Formatting issue

I am sure there is a more efficient way to write the code but the issue i am having is in my dataframe 2 of my columns (dtypes are objects that represent dates in format yyyy-mm-dd).我确信有一种更有效的方法来编写代码,但我遇到的问题是在我的列的 dataframe 2 中(dtypes 是表示格式为 yyyy-mm-dd 的日期的对象)。 When I use xlsxWriter everything else is coming out exactly as i need except the two columns that have dates are 'custom' column types in excel and aren't formatted (align top nor is the size 8).当我使用 xlsxWriter 时,其他所有内容都完全符合我的需要,除了具有日期的两列是 excel 中的“自定义”列类型并且没有格式化(对齐顶部也不是大小 8)。 The rest of the columns in excel are 'general' and formatting is correct. excel 中的列的 rest 是“通用的”,格式正确。 Any suggestions would be greatly appreciated任何建议将不胜感激

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()

If your columns with the dates are objects you firstly need to convert them to datetime.如果您的日期列是对象,您首先需要将它们转换为日期时间。 You then need to specify the default date format when you create the writer object with xlsxwriter (for more info have a look here ).然后,您需要在使用 xlsxwriter 创建编写器 object 时指定默认日期格式(有关更多信息,请查看 此处)。

Here is a working example to demonstrate this:这是一个工作示例来证明这一点:

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()

EDIT编辑

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()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM