我正在将日期写入文件,我正在使用:
date.strftime('%m/%d/%Y')
我正在将日期对象写入excel文件:
worksheet.write(row_count, column_count, r, formatter)
其中formatter
将其对齐在中间,r
是当前循环中的对象。
它显示为10/28/2016
,但我希望将其保存为数字值(例如42871
)。有没有办法在代码中发生这种情况而不是在excel中手动发生?
答案 0 :(得分:1)
Excel中的数字值是我假设的纪元以来的日期,在本例中是1900年1月1日。请参阅here。但是,在实践中,您可能希望使用1899年12月30日来计算闰年。你所要做的就是进行差异检查,然后从时代开始。
假设您的日期是2016年10月28日:
>>> from datetime import date
>>> new_value = (date(2016,10,28) - date(1899,12,30)).days
42671
因此,在编写行之前,只需进行一些前期计算:
new_value = (your_date_in_the_row - date(1899,12,30)).days
答案 1 :(得分:1)
正如Working with Dates and Times上的XlsxWriter文档中所述,Excel中的日期只是一个带格式的数字。如果省略格式,则会得到数字:
from datetime import datetime
import xlsxwriter
workbook = xlsxwriter.Workbook('datetimes.xlsx')
worksheet = workbook.add_worksheet()
# Widen the first column so that the dates are visible.
worksheet.set_column('A:A', 20)
# Create a datetime object.
date_time = datetime.strptime('2017-05-16', '%Y-%m-%d')
# Create a format for the date or time.
date_format = workbook.add_format({'num_format': 'd mmmm yyyy'})
worksheet.write('A1', date_time, date_format)
worksheet.write('A2', date_time )
workbook.close()
输出: