2015-05-27 8 views
18

Ich benutze derzeit OpenPexx v2.2.2 für Python 2.7 und ich wollte Farben auf Zellen setzen.Python - Zellen mit Farben füllen openpyx

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

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

ws['A1'].style = redFill 

aber ich bekomme die folgende Fehlermeldung:

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

Jede Idee, wie man festgelegt habe ich die folgenden Importe

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

und die folgenden ist der Code, den ich versuchte mit verwendet Zelle A1 (oder andere Zellen) mit Farben mit openpyx?

+0

Konnten Sie die volle Spur zurück zur Verfügung stellen – The6thSense

Antwort

21

Ich glaube, das Problem ist, dass Sie ein Füllobjekt zu einem Stil zuweisen möchten.

ws['A1'].fill = redFill sollte gut funktionieren.

+2

Dank Charlie. Ich bin ziemlich neu in Python und die openpyxl Dokumente waren nicht klar darüber, wie man die Füllung auf eine Zelle anwenden. Ihre Antwort hat das Problem gelöst. –

4

Das funktionierte für mich. Sie haben die Dinge geändert und die meiste Hilfe, die Sie im Internet sehen, ist für ältere Versionen der openpyxl-Bibliothek von dem, was ich sehe.

# Change background color 
xls_cell.style = Style(fill=PatternFill(patternType='solid', 
             fill_type='solid', 
             fgColor=Color('C4C4C4'))) 
+1

Etwas, über das man vorsichtig sein sollte. Wenn Sie mehrere Änderungen an der Zelle vornehmen, werden vorherige Änderungen mit den letzten Änderungen gelöscht. Wenn Sie sagen wollen, 6 Änderungen, müssen Sie alle 6 in dem gleichen Befehl zu tun. Sie können sie nicht einzeln ändern. Wenn Sie nur die letzte Änderung vornehmen, wird beibehalten. –

2

Die API für Stile wurde erneut geändert. Was für mich funktionierte war

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

Farbe ist eine Alpha-RGB-Hex-Farbe. Sie können es als 'rrggbb' mit einem Standard-Alpha von 00 übergeben oder das Alpha mit 'aarrggbb' angeben. Eine Reihe von Farben sind in openpyxl.styles.colors als Konstanten definiert, wenn Sie schnell eine davon benötigen.

+1

my_fill = openpyxl.styles.fills.PatternFill (patternType = 'solide', fgColor = my_red) –

+0

Danke Gourav! – ldrg

Verwandte Themen