【问题标题】:openpyxl Workbook theme colors not standard for Excelopenpyxl 工作簿主题颜色不是 Excel 的标准颜色
【发布时间】:2022-10-21 05:49:17
【问题描述】:

我正在尝试使用 python 和 openpyxl 将单元格颜色从一个 xlsx 复制到另一个。使用:

cellInNewBook.fill = copy(cellInOriginalBook.fill)

可以这样做,但由于某种原因,我使用创建的工作簿:

newBook = Workbook()

当我在 Excel 中打开它时,它具有不同的主题颜色。

当我选择在原始 xlsx 中编辑单元格背景颜色时,它会显示以下主题颜色:

但是,当我在 Excel 中查看新工作簿的相同单元格背景下拉选项时,它们是不同的,因此我的副本显示不同的颜色,因为每个选项的索引不同:

所以我得出结论,主题颜色是由 openpyxl 的 Workbook() 设置的,它们不是 Excel 的默认颜色。有没有办法让新工作簿以与原始 xlsx 工作簿相同的顺序/位置匹配主题颜色?

【问题讨论】:

  • 当然,理论上您可以将主题设置从一个工作簿复制到另一个工作簿。没有用于此的 API,但如果您查看源代码,它相当简单。

标签: excel openpyxl fill


【解决方案1】:

OpenPyxl 以不同的方式处理“主题颜色”和“标准颜色”。 您可以通过以下方式自行测试:

print("Cell fill display:" wb.active(rowNumber, columnNumber).fill)

这将显示一个长输出,其中包括类似于以下内容的部分:

fgColor=<openpyxl.styles.colors.Color 对象> 参数:rgb=None, 索引=无,自动=无,主题=4,色调=0.7999816888943144, 类型='主题',...

注意 rgb 是 None 但最后的类型是“theme”而不是“rgb”。

如果您希望使用“主题”而不是标准 (rgb) 颜色,则需要定义一个函数来提取主题和色调,然后将它们作为字符串或字典项存储在一起。

wb.active(rowNumber, columnNumber).fill.fgColor.theme)
wb.active(rowNumber, columnNumber).fill.fgColor.tint)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 2016-02-15
    • 2021-12-30
    • 2012-03-31
    • 1970-01-01
    • 2013-06-19
    相关资源
    最近更新 更多