XlsxWriter 将日期写为数字
XlsxWriter writing date as number
我正在将日期写入文件并且我正在使用:
date.strftime('%m/%d/%Y')
我正在将日期对象写入 excel 文件:
worksheet.write(row_count, column_count, r, formatter)
其中 formatter
将其居中对齐,r
是当前循环中的对象。
它显示为 10/28/2016
,但我希望将其保存为数字值(例如 42871
)。有什么方法可以在代码中发生这种情况,而不是在 excel 中手动发生?
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
正如 XlsxWriter 文档中关于 Working with Dates and Times 的解释,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()
输出:
我正在将日期写入文件并且我正在使用:
date.strftime('%m/%d/%Y')
我正在将日期对象写入 excel 文件:
worksheet.write(row_count, column_count, r, formatter)
其中 formatter
将其居中对齐,r
是当前循环中的对象。
它显示为 10/28/2016
,但我希望将其保存为数字值(例如 42871
)。有什么方法可以在代码中发生这种情况,而不是在 excel 中手动发生?
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
正如 XlsxWriter 文档中关于 Working with Dates and Times 的解释,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()
输出: