openpyxl indices 64 and 65 are reserved for the system foreground and background colours respectively
时间: 2024-02-17 18:02:34 浏览: 131
Accurate measurement of the main refractive indices and thermo-optical coefficients of the calcite crystal
这个问题是因为 openpyxl 中的颜色索引 64 和 65 被系统保留,不能直接使用。如果你想要获取所有单元格的底色值,你需要先将颜色索引转换为 RGB 颜色值。你可以使用 openpyxl 中的 `utils` 模块来实现这个功能,具体方法如下:
```python
from openpyxl import load_workbook
from openpyxl.styles.colors import Color
from openpyxl.utils import get_color_from_index
# 加载工作簿
workbook = load_workbook('example.xlsx')
# 获取工作表
worksheet = workbook.active
# 遍历所有单元格
for row in worksheet.iter_rows():
for cell in row:
# 获取单元格的 fill 属性
fill = cell.fill
# 如果单元格填充颜色不为空
if fill.start_color.index is not None:
# 获取填充颜色的索引值
index = fill.start_color.index
# 如果索引值为 64 或 65,转换为 RGB 颜色值
if index in (64, 65):
color = get_color_from_index(index).rgb
else:
color = Color(index).rgb
print(cell.coordinate, color)
```
以上代码实现了打开 Excel 文件,遍历所有单元格,并将填充颜色转换为 RGB 颜色值。注意,如果单元格填充颜色的索引值为 64 或 65,需要使用 `get_color_from_index` 方法将索引值转换为 RGB 颜色值。
阅读全文