2017-05-12 57 views
2

我有一段代碼可將unix日期轉換爲標準的美國日期格式。它在excel中正確顯示,但是excel不會將其識別爲日期。Excel無法識別使用openpyxl的日期

if str(startdate).isdigit(): 
    startdate = int(startdate) 
    date = datetime.datetime.fromtimestamp(int(startdate)).strftime('%m/%d/%Y') 
    ws4.cell(row=cell.row,column=2).value = date 
    ws4.cell(row=cell.row,column=2).number_format = 'MM DD YYYY' 

任何想法如何讓excel看到這是一個日期而不是文本?

+0

'date = int(startdate)'確保你的日期是一個數字。在第二行代碼中,您嘗試將該數字轉換爲字符串,然後您想要將其讀爲一個數字,該數字通過「格式」函數顯示爲字符串。如果Excel單元格保存原始數字,則可以應用您設計的格式,並且它應該正確顯示。 – Variatus

+1

只要您轉換了時間戳並且不需要兩次調用int(),就停止。 –

回答

1

我的錯誤是假設下面一行創建了一個日期。

date = datetime.datetime.fromtimestamp(int(startdate)).strftime('%m/%d/%Y') 

冒險進入文檔後(嚇人,就像地獄的小白,這是否變得更加容易?)我意識到.strftime('%m/%d/%Y')創建一個字符串不是日期。

date = datetime.datetime.strptime(date, '%m/%d/%Y').date() 

現在Excel識別它作爲一個日期:

我使用轉換該字符串的日期。

希望這可以幫助未來的人。