web-dev-qa-db-ja.com

python-openpyxlを使用してセルを色で塗りつぶします

現在、Python 2.7でopenpyxl v2.2.2を使用しており、セルに色を設定したかった。次のインポートを使用した

import openpyxl,
from openpyxl import Workbook
from openpyxl.styles import Color, PatternFill, Font, Border
from openpyxl.styles import colors
from openpyxl.cell import Cell

そして、次は私が使用しようとしたコードです:

wb = openpyxl.Workbook()
ws = wb.active

redFill = PatternFill(start_color='FFFF0000',
                   end_color='FFFF0000',
                   fill_type='solid')

ws['A1'].style = redFill

しかし、次のエラーが表示されます。

Traceback (most recent call last)
  self.font = value.font.copy()
AttributeError: 'PatternFill' object has no attribute 'font'

Openpyxlを使用して色でセルA1(または他のセル)を設定する方法に関するアイデアはありますか?

33
Ahmed Rashad

問題は、塗りつぶしオブジェクトをスタイルに割り当てようとしていることだと思います。

ws['A1'].fill = redFillは正常に動作するはずです。

39
Charlie Clark

これは私のために働いた。彼らは状況を変え、あなたがインターネットで見る助けのほとんどは私が見ているものからのopenpyxlライブラリの古いバージョンのためです。

# Change background color 
xls_cell.style = Style(fill=PatternFill(patternType='solid',
                                        fill_type='solid', 
                                        fgColor=Color('C4C4C4')))
6
M T Head

スタイルのAPIが再び変更されました。私のために働いたのは

my_red = openpyxl.styles.colors.Color(rgb='00FF0000')
my_fill = openpyxl.styles.fills.PatternFill(patternType='solid', fgColor=my_red)
cell.fill = my_fill

色は、アルファRGB 16進数の色です。デフォルトのアルファを00にして'rrggbb'として渡すか、'aarrggbb'でアルファを指定できます。色をすばやく取得する必要がある場合、色の束はopenpyxl.styles.colorsの定数として定義されます。

4
ldrg

in python 3.x

wb = openpyxl.Workbook()
ws = wb.active
redFill = PatternFill(start_color='FFFF0000',
                   end_color='FFFF0000',
                   fill_type='solid')
ws['A1'].fill = redFill

動作しているが、python 2.xでわからない] ws['A1'].fill=redFill

0
ismail