簡體   English   中英

為 Cell OpenPyXL 添加背景顏色

[英]Adding a background color to Cell OpenPyXL

我試圖讓它在我的代碼“存在”時在單元格上發出綠色背景,如果“不存在”則在單元格上發出紅色背景。 這是我的代碼。

ws1.cell(column=1, row=t, value="%s" % blue_student_list)
if (student_check(i)):
    ws1.cell(column=2, row=t, value="%s" % "Present")
else:
    ws1.cell(column=2, row=t, value="%s" % "Absent")

這段代碼完美無缺,我只是想知道如何在單元格后面添加背景顏色。

使用openpyxl 2.5.3 ,上面的代碼不起作用。

嘗試后,以下代碼有效:

from openpyxl.styles import PatternFill
sheet['A1'].fill = PatternFill(start_color="FFC7CE", end_color="FFC7CE", fill_type = "solid")

文檔

from openpyxl.styles import PatternFill
        
sheet['A1'].fill = PatternFill(bgColor="FFC7CE", fill_type = "solid")
    

正如@Charlie Clark( openpyxl 的合著者)所暗示的那樣,條件格式可能是更好的方法。 官方文檔中的更多信息

如果要更改背景顏色,從更新的版本開始,關鍵字bgcolor似乎不起作用(在我的情況下,單元格的顏色最終變為黑色)。

相反,您可以使用start_colorfgColor 例如,兩種解決方案都有效:

from openpyxl.styles import PatternFill
from openpyxl.styles.colors import YELLOW

sheet['A1'].fill = PatternFill(start_color="FFC7CE", fill_type = "solid")
sheet['A1'].fill = PatternFill(fgColor=YELLOW, fill_type = "solid")

這適用於 openpyxl V 2.6 及更高版本


from openpyxl.styles import PatternFill

for col_range in range(1, 12):
    cell_title = sheet.cell(1, col_range)
    cell_title.fill = PatternFill(start_color="8a2be2", end_color="8a2be2", fill_type="solid")

這將使單元格從 A1 到 K1 着色

我正在嘗試使其在代碼為“ Present”時在單元格上發出綠色背景,而如果代碼為“ Absent”時在單元格上發出紅色背景。 這是我的代碼。

ws1.cell(column=1, row=t, value="%s" % blue_student_list)
if (student_check(i)):
    ws1.cell(column=2, row=t, value="%s" % "Present")
else:
    ws1.cell(column=2, row=t, value="%s" % "Absent")

這段代碼可以完美地工作,我只是想知道如何在單元格后面添加背景色。

我很難復制單元格的背景顏色(從一本書的標簽到另一本書的標簽......)

經過大量嘗試的解決方法后,我發現這可行:

 from openpyxl.styles import PatternFill
 from openpyxl.styles.colors import COLOR_INDEX
 from copy import copy as shallow_copy, deepcopy as deep_copy
 # .
 # .
 # .
 if from_cell.has_style:
    if isinstance(from_cell.fill.start_color.index, int):
       start_color=COLOR_INDEX[from_cell.fill.start_color.index]

    else: # _sometimes_ a string...
          start_color=from_cell.fill.start_color.index

    end_color=start_color
    to_cell.fill=shallow_copy(PatternFill(fill_type=from_cell.fill.fill_type,
                                          start_color=start_color,
                                          end_color=end_color,
                                          patternType=from_cell.fill.patternType
                                 )
                     )

僅供參考:openpyxl 是一個很棒的產品; 我認為很多開發人員都沒有意識到使用它的可能性。 我會支持這個項目。

我想也許一些開發人員錯誤地認為它是反開源的; 但是 xlsx 文檔也由 LibreOffice 呈現...

我正在嘗試使其在代碼為“ Present”時在單元格上發出綠色背景,而如果代碼為“ Absent”時在單元格上發出紅色背景。 這是我的代碼。

ws1.cell(column=1, row=t, value="%s" % blue_student_list)
if (student_check(i)):
    ws1.cell(column=2, row=t, value="%s" % "Present")
else:
    ws1.cell(column=2, row=t, value="%s" % "Absent")

這段代碼可以完美地工作,我只是想知道如何在單元格后面添加背景色。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM