问题分析:
根据您提供的代码,您已经通过 xlsxwriter 库创建并写入了一个 Excel 文件。您希望设置第一行和日期单元格的字体,但是不生效。
原因分析:
xlsxwriter 库中,可以使用 set_row() 和 set_column() 方法分别设置某一行或某一列的格式。而日期格式的设置需要在 datetime_format 参数中指定相应的格式字符串。在您的代码中,似乎已经正确调用了 set_row() 和 set_column() 方法,但是在设置字体时出现了问题。此外,也没有指定 datetime_format 参数。
解决方案:
为了设置某一行或某一列的字体,您需要创建一个 Format 对象,并将其用于 set_row() 或 set_column() 方法中。您可以使用 add_format() 方法创建自定义格式。在您的代码中,似乎您已经正确创建了 font_format 和 date_format 两个格式,但是没有将它们应用到工作表中。
要将字体格式应用到第一行,请按照以下方式修改您的代码:
worksheet.set_row(0, None, font_format)
这会将第一行的行高设置为默认大小(None),并将 font_format 应用于该行。请注意,您还可以使用 set_default_row() 方法设置整个工作表的默认行高和格式。
要将日期格式应用于 Job_Start_Date 和 Job_End_Date 列,请按照以下方式修改您的代码:
worksheet.set_column(
detail_filtered.columns.get_loc('Job_Start_Date'),
detail_filtered.columns.get_loc('Job_End_Date'),
None,
date_format
)
这会将 Job_Start_Date 和 Job_End_Date 列中所有单元格的列宽设置为默认大小(None),并将 date_format 应用于该列。请注意,您还可以使用 set_default_column() 方法设置整个工作表的默认列宽和格式。此外,当您调用 set_column() 方法时,如果未指定列宽,则会将其设置为 8.43 字符宽度。如果不希望设置固定的列宽,您可以将列宽参数设置为 None。
最后,请确保在创建 ExcelWriter 对象时指定 datetime_format 参数,以便将日期格式应用于整个工作表:
writer = pd.ExcelWriter(
'Detail for ' + key + '.xlsx',
engine='xlsxwriter',
date_format='yyyy-mm-dd',
datetime_format='yyyy-mm-dd'
)
此参数是必需的,因为它指示 xlsxwriter 库将日期数据编写为日期单元格格式。
综上所述,以下是修改后的完整代码:
writer = pd.ExcelWriter(
'Detail for ' + key + '.xlsx',
engine='xlsxwriter',
date_format='yyyy-mm-dd',
datetime_format='yyyy-mm-dd'
)
detail_filtered.to_excel(writer, sheet_name='Detail', index=False, freeze_panes=(1, 5))
workbook = writer.book
font_format = workbook.add_format({'font_name': '微软雅黑', 'font_size': 10})
date_format = workbook.add_format({
'num_format': 'yyyy-mm-dd',
'font_name': '微软雅黑',
'font_size': 10
})
worksheet = writer.sheets['Detail']
worksheet.set_row(0, None, font_format)
worksheet.set_column(
detail_filtered.columns.get_loc('Job_Start_Date'),
detail_filtered.columns.get_loc('Job_End_Date'),
None,
date_format
)
writer.save()
希望这可以解决您的问题。如果您还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要! |