我使用xlwt創建了一個.xls電子表格,並且我需要創建日期單元格。用Excel「日期」格式書寫xlwt日期
我已經寫出數字,並設置數字格式字符串,使它們看起來像日期,但批判地說,他們實際上並沒有寫入日期 - 如果你在Excel中格式化單元格,它是一個「自定義」類別而不是「日期」一個,這很重要。
我可以讓xlwt實際寫出「日期」單元嗎?
我使用xlwt創建了一個.xls電子表格,並且我需要創建日期單元格。用Excel「日期」格式書寫xlwt日期
我已經寫出數字,並設置數字格式字符串,使它們看起來像日期,但批判地說,他們實際上並沒有寫入日期 - 如果你在Excel中格式化單元格,它是一個「自定義」類別而不是「日期」一個,這很重要。
我可以讓xlwt實際寫出「日期」單元嗎?
將在Excel的「日期」類別顯示,如果你使用對應於Excel的一個格式字符串的數字內置格式字符串,如dd/mm/yyy
。例如:
import xlwt
import datetime
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('Sheet1')
date_format = xlwt.XFStyle()
date_format.num_format_str = 'dd/mm/yyyy'
worksheet.write(0, 0, datetime.datetime.now(), date_format)
workbook.save('date_format.xls')
如果你修改這個例子中使用的d/mm/yyy
格式字符串,則數量將在「自定義」類別中。
注意:上述代碼適用於我試過的Excel版本,但有可能這是受區域變化的影響。最好的辦法是在Excel中用你想要的「Date」格式格式化一個數字,然後在同一個對話框中點擊「Custom」來查看與「Date」格式相關的格式字符串。然後在你的程序中使用它。
另外:Excel XLS格式中沒有任何本機日期類型。所有日期都以數字和格式存儲。除了格式字符串之外,沒有什麼區別它們與格式的任何其他數字。由於必須應用啓發式方法來確定單元格是否包含日期,因此這是解析Excel文件時很痛苦的一件事情。
從http://www.youlikeprogramming.com/2011/04/examples-generating-excel-documents-using-pythons-xlwt/
輸入日期成小區
import xlwt
import datetime
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
style = xlwt.XFStyle()
style.num_format_str = 'D-MMM-YY' # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0
worksheet.write(0, 0, datetime.datetime.now(), style)
workbook.save('Excel_Workbook.xls')
謝謝,就是這樣。 – xorsyst
+1,但應該補充的是,僅僅使用諸如'2014-01-23'之類的ISO格式字符串將不會按預期進行轉換(格式將爲日期,但內容將是無用的文本字符串) ;使用實際的datetime()對象可以避免這個問題。 我沒有使用全面的ISO字符串(如'2014-01-23T12:34:56')進行測試,該字符串可能仍然有效 - 如果他們知道這個字符,其他人應該在這裏放一張便條。 – Ryder
@RyderDain該問題的標題是誤導性的,可能應該進行編輯。這個問題,答案和例子是關於如何使用'xlwt'生成內置日期格式與自定義格式。不討論生成實際日期。 – jmcnamara