簡體   English   中英

xlsxwriter 中的日期條件格式格式化空白單元格和符合條件的單元格

[英]date conditional formatting in xlsxwriter formatting blank cells and cells that meet criteria

我有一個日期列,我正在嘗試使用 xlsxwriter 進行格式化。

該列可以包含日期或為空。

我嘗試應用的條件格式(當日期為 < 今天時突出顯示單元格)正在工作。 但它也對空白單元格應用相同的格式規則。

如何防止它格式化空白單元格?

代碼見下:


format1 = workbook.add_format({'bg_color':   '#FFC7CE',
                               'font_color': '#9C0006'})
date = datetime.now()

worksheet.conditional_format(due_range, {'type':     'date',
                                        'criteria': 'less than',
                                        'value':    date,
                                        'format':   format1})

writer.save()
workbook.close()

為了在 XlsxWriter 中使用條件格式,您應該首先弄清楚您想在 Excel 中做什么,然后將其轉移。

Excel 中的日期只是具有格式的數字,因此它看起來像一個空白單元格被 Excel 解釋為 0,因此作為 1900-01-01 紀元日期。

解決此問題的一種方法是獲取第一個非零日期和所需日期之間的條件格式范圍。 在 XlsxWriter 中,您可以這樣做:

import pandas as pd
from datetime import datetime, date

# Create a Pandas dataframe from some datetime data.
df = pd.DataFrame({'Dates': [date(2019, 5, 1),
                             None,
                             date(2019, 5, 2),
                             date(2019, 5, 3),
                             None,
                             date(2019, 5, 4),
                             date(2019, 5, 5)],
                   })


writer = pd.ExcelWriter("pandas_test.xlsx", engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
workbook  = writer.book
worksheet = writer.sheets['Sheet1']

format1 = workbook.add_format({'bg_color':   '#FFC7CE',
                               'font_color': '#9C0006'})
date = datetime.now()
due_range = 'B2:B8'

worksheet.conditional_format(due_range, {'type':    'date',
                                        'criteria': 'between',
                                        'minimum':  datetime(1900, 1, 2),
                                        'maximum':  date,
                                        'format':   format1})

worksheet.set_column('B:B', 20)
writer.save()

輸出:

在此處輸入圖片說明

暫無
暫無

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

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