2

とても変わったものに出会いました。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ワークシート/ワークブックのデータはキャッシュされますか? これはそのような行動を説明するからです。

4

1 に答える 1

0

私はこれをもっと詳しく調べました。同様の問題に直面している場合は、上記の問題の原因を説明しているこの質問に従ってください。現在、これは の既知の問題でopenpyxlあり、一部の人々はこれを修正するために取り組んでいます。したがって、このバグ (ライブラリのバグが原因であることが確認されているため) がすぐに修正されることを願っています。

問題を軽減するために私が提案できるのはopenpyxl、ワークブックをExcelに保存するときに、後で使用して満たされていないセルを常に1つだけ選択することです。また、Excel 自体で書式設定されたセルにあまり触れないようにしてくださいopenpyxl。また、Excel を使用してセルの書式を変更する場合は、一度に 1 つのセルのみを変更するようにしてください。セルの範囲に同じスタイルを適用すると、openpyxl.

私にとっては満足のいくものではありませんが、著者について聞いたことがあり、これまでのところ自分自身を理解したのはそれだけです.

于 2013-08-17T17:51:12.800 に答える