使用openpyxl设置Excel单元格字体样式无效、加粗不生效如何解决
openpyxl设置单元格粗体不生效解决方案
可按以下步骤逐一排查解决:
- 首先排查文件缓存问题
确认打开的是generated/目录下新生成的文件,不是原模板resg.xlsx,可以临时修改生成文件名做测试,避免打开了本地缓存的旧文件。 - 清除原有样式冲突
如果原模板resg.xlsx中的A6单元格属于Excel表格对象(带筛选的插入表)、应用了条件格式或者预设单元格样式,这类预设样式优先级高于手动设置的字体属性,会导致设置不生效。可在设置字体前先清空单元格原有样式:from openpyxl import load_workbook from openpyxl.styles import Font wb_orden = load_workbook(filename = 'resg.xlsx') ws_orden = wb_orden["Resguardo"] ws_orden['A6'] = "hsadgfagahgafdhg" # 先重置为默认普通样式,清除原有冲突样式 ws_orden['A6'].style = 'Normal' # 再设置自定义字体 ws_orden['A6'].font = Font(size = 24, italic = True, bold = True) NAME = "generated/"+"res_"+order+".xlsx" wb_orden.save(filename = NAME) - 升级openpyxl版本
旧版本openpyxl存在样式继承的已知bug,可升级到最新版本后重试:pip install --upgrade openpyxl - 继承原有字体属性修改
如果需要保留单元格原有其他字体属性,只修改加粗属性,可通过复制原有字体对象修改的方式实现:from copy import copy # 复制原有字体属性 new_font = copy(ws_orden['A6'].font) # 仅修改加粗属性 new_font.bold = True ws_orden['A6'].font = new_font
内容的提问来源于stack exchange,提问作者mimus
相关产品推荐
相关产品推荐

