[英]Applying Conditional Formatting over Varying Cell Ranges in Excel (XlsxWriter)
[英]Unexpected cell formatting behaviour in XlsxWriter
使用xlsxwriter创建电子表格。 设置格式:
fmt_title = self.workbook.add_format({
'font_name': 'FreeSans',
'font_size': 14,
'font_color': '#0066B3',
'bold': True,
})
我将格式应用于合并的行,然后更改了字体大小(目的是写另一行字体较小的行)
self.worksheet.merge_range('A1:G1', 'Font Size SHOULD be 14',fmt_title)
fmt_title.set_font_size(12)
self.worksheet.merge_range('A2:G2', 'Font Size SHOULD be 12',fmt_title)
我遇到的问题是更改字体大小后,所有应用格式的行都更改为12的字体大小。为什么在我写完行之后,格式又发生变化?
要意识到的关键是,仅在执行workbook.close()
语句时才开始写入实际的excel文件。
因此,基本上,在执行worksheet.merge_range('A1:G1', 'Font Size SHOULD be 14',fmt_title)
尚未真正使用过fmt_title
格式设置对象fmt_title
worksheet.merge_range('A1:G1', 'Font Size SHOULD be 14',fmt_title)
。 仅存储对格式化对象的引用以供以后使用。
xlsxwriter文档确认您所看到的是正常行为(尽管可以承认,起初它可能是违反直觉的):
修改格式
XlsxWriter电子表格中的每种唯一单元格格式都必须具有一个对应的Format对象。 不能将Format与
write()
方法一起使用,然后将其重新定义以供以后使用。 这是因为格式不是以当前状态而是以最终状态应用于单元格。 考虑以下示例:cell_format = workbook.add_format({'bold': True, 'font_color': 'red'}) worksheet.write('A1', 'Cell A1', cell_format) # Later... cell_format.set_font_color('green') worksheet.write('B1', 'Cell B1', cell_format)
单元格A1分配了一种格式,该格式最初将字体设置为红色。 但是,颜色随后设置为绿色。 当Excel显示单元格A1时,它将显示格式的最终状态,在这种情况下将为绿色。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.