XlsxWriter将数字写入date

我正在写一个文件的date,我正在使用:

date.strftime('%m/%d/%Y') 

和我写date对象为Excel文件:

 worksheet.write(row_count, column_count, r, formatter) 

formatter器在中间alignment, r是当前循环中的对象。

它显示像10/28/2016但我希望它被保存为一个数字值(如42871例如)。 有没有办法在代码中发生这种情况,而不是在Excel中手动?

正如在使用date和时间的XlsxWriter文档中所解释的,Excel中的date只是一个格式的数字。 如果你省略了格式,你会得到这个数字:

 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() 

输出:

在这里输入图像说明

Excel中的数字值是我所假设的时间,在这个例子中是1900年1月1日。请参考这里 。 但是,在实践中,你会想用1899年12月30日来解释闰年。 所有你需要做的就是运行差异检查,然后从这个时代开始。

假设你的date是10/28/2016:

 >>> 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