繁体   English   中英

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.

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