2013-08-06 268 views
2

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

__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是否缓存任何工作表/工作簿数据?因为这可以解释这种行为。

+0

cell.row和cell.column给你什么? – Brad

+0

一个诚实的答案是我不知道,我会看看(星期四因为我明天不上班)。谢谢。 –

回答

0

我已经仔细研究了这一点。如果您遇到类似问题,请按照this question of mine的描述原因解决上述问题。截至目前,这是openpyxl中的一个已知问题,有些人正在努力解决这个问题。所以希望这个错误(因为它已被确认是由库中的一个错误引起的)很快就会被修复。

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

尽管我对这些作者感到不满意,但至今我已经听到了作者的想法。