Openpyxl填充相邻细胞

时间:2013-08-06 11:13:34

标签: python python-2.7 openpyxl

我遇到了一件非常奇怪的事情。当我尝试用纯色填充excel工作表中的单元格时,它会填充相邻的单元格,有时甚至会填充数十个单元格。这很奇怪,因为我在我的代码的其他地方成功地做了同样的事情,只是这个不同。我慢慢想出可能出错的想法,并认为这里可能有人有类似问题并解决了。我的相关代码是:

__incorrectUnitsColour__='FF33CC'
cell, sheet =GetCellFromDest(str(named_range.destinations),wb) # Returns the cell pointed to by the named_range, this should work fine as I use it a lot in other places.

cell.style.fill.fill_type=openpyxl.style.Fill.FILL_SOLID
cell.style.fill.start_color.index=__incorrectUnitsColour__

如果你对可能出现的问题有任何想法,我会很高兴听到他们,他们甚至不需要工作只是为了让我思考正确的方向;)

我在上面添加了以下代码:

print cell.row
print cell.column

按预期返回2 G。我还证实,每隔几次运行,细胞突出的程度就会增加。它比这更奇特,如果我使用openpyxl突出显示同一工作表中的其他单元格,则突出显示相同的范围。

我非常强烈地感觉工作表设置有问题,但我不知道是什么。此外,当我尝试以编程方式突出显示同一工作表中的多个单元格时,此错误才会显示。

是什么让所有这些更奇怪的突出显示不同工作表中的单元最终会导致相同范围的单元格被突出显示。

关注问题openpyxl是否会缓存任何工作表/工作簿数据?因为这可以解释这种行为。

1 个答案:

答案 0 :(得分:0)

我对此进行了更多研究。如果您遇到类似问题,请按照this question of mine进行操作,其中说明了导致上述问题的原因。截至目前,这是openpyxl中的一个已知问题,有些人正在努力解决这个问题。所以希望这个错误(因为它已被证实是由库中的错误引起的)将很快修复。

我可以建议尝试解决此问题的方法是,在Excel中保存工作簿时,始终只选择一个未使用openpyxl填充的单元格。另外,请尝试不要通过Excel本身触摸格式化的单元格,只需openpyxl。如果您通过Excel更改单元格格式,请确保一次只更改一个单元格 - 如果将相同的样式应用于一系列单元格,则在使用openpyxl格式化单元格时,相同的范围将会更改

令我感到不满意的是,我听说过这些作者并且到目前为止已经找到了我自己。