为什么 openpyxl 不断损坏我的 Excel 文件?

问题描述 投票:0回答:2

我正在尝试使用 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”提供值。这显然没有道理。

也许我做错了(很难遵循文档;必须查找旧的类似实现/片段)。希望得到一些帮助。

谢谢!

python python-3.x excel openpyxl
2个回答
0
投票

我意识到这已经很晚了,但我遇到了类似的问题,当我尝试将 Pandas 数据帧写入 Excel 工作簿时,openpyxl 损坏了我的 .xlsx 文件。事实证明,问题是工作簿的某些单元格中有一些其他带有公式的选项卡,并且由于某种原因,当 openpyxl 运行时,公式被损坏。我不明白为什么,但“修复”是删除公式(因此,硬编码任何可以的东西)。


0
投票

尝试注册参数

wkbk = openpyxl.load_workbook('example.xlsx', data_only=True, keep_vba=True)
© www.soinside.com 2019 - 2024. All rights reserved.