2016-09-28 164 views
1

在Excel單元格中,我調用函數fff(DATE(2001,1,1))。要接收日期參數,我使用(xlwings 0.10.0)以下代碼:Xlwings:日期參數轉換

@xw.func 
@xw.arg('req_date', dates=datetime.date) # I also tried datetime.datetime 
def fff(req_date): 
    print req_date 

其中打印的只是一個數字,而不是datetime對象。我通過致電

req_date = datetime.datetime(1899, 12, 30) 
      + datetime.timedelta(days=req_date) 

解決了這個問題,但我想知道我在xlwings方式上做了什麼錯誤?!

回答

2

如果Excel中的單元格格式化爲Date,xlwings僅執行自動轉換爲datetime對象。也就是說,如果將=DATE(2001,1,1)放入一個單元格中,然後在另一個單元格中寫入=fff('A1'),它將按照您的預期工作(假定日期公式在A1中)。

+0

好的,它確實有效(當然)。但我擔心這有點誤導。我認爲通過使用@arg我指定了參數的類型。沒關係,這是一個小功能。 – Sasha

+0

目前,日期轉換器僅適用於日期格式的單元格。我明白你的觀點 - 可能是未來的增強。 –