我正在尝试使用 openpyxl 库将样式应用到 Excel 文件中的单元格。如果我尝试这个(使用现有样式并修改它):
import openpyxl
wkbk = openpyxl.load_workbook('example.xlsx')
views_sheet = wkbk['Sheet']
cell_ = views_sheet.cell(row=4,column=3)
cell_.style = '20 % - Accent1'
bd = openpyxl.styles.Side(color=openpyxl.styles.colors.Color(theme=29))
cell_.border = openpyxl.styles.Border(left=bd, top=bd, right=bd, bottom=bd)
cell_.font = openpyxl.styles.Font(name='Calibri',size=11,bold=False,italic=False,vertAlign=None,underline='none',strike=False)
wkbk.save('example.xlsx')
我打开“example.xlsx”,我发现我的文件已损坏/需要恢复。我认为也许不可能覆盖某些现有样式,因此我创建了一个新的命名样式“突出显示”以及相关的颜色:
highlight = openpyxl.styles.NamedStyle(name="highlight")
highlight.fill = openpyxl.styles.PatternFill(bgColor=openpyxl.styles.colors.Color(theme=30),fill_type='shaded',patternType='lightGray')
bd = openpyxl.styles.Side(color=openpyxl.styles.colors.Color(theme=29))
highlight.border = openpyxl.styles.Border(left=bd, top=bd, right=bd, bottom=bd)
highlight.font = openpyxl.styles.Font(name='Calibri',size=11,bold=False,italic=False,vertAlign=None,underline='none',strike=False)
wkbk.add_named_style(highlight)
cell_.style = 'highlight'
但随后我不断收到 ValueError ,指示我需要为“PatternFill”类的参数“patternType”提供值。这显然没有道理。
也许我做错了(很难遵循文档;必须查找旧的类似实现/片段)。希望得到一些帮助。
谢谢!
我意识到这已经很晚了,但我遇到了类似的问题,当我尝试将 Pandas 数据帧写入 Excel 工作簿时,openpyxl 损坏了我的 .xlsx 文件。事实证明,问题是工作簿的某些单元格中有一些其他带有公式的选项卡,并且由于某种原因,当 openpyxl 运行时,公式被损坏。我不明白为什么,但“修复”是删除公式(因此,硬编码任何可以的东西)。
尝试注册参数
wkbk = openpyxl.load_workbook('example.xlsx', data_only=True, keep_vba=True)