带有日期的XlsxWriter write_formula

时间:2018-03-15 23:15:26

标签: python python-3.x xlsxwriter

我正在尝试使用公式将日期值从单元格复制到另一个单元格。但是尝试将日期格式添加到worksheet.write_formula()会导致excel显示以下警告

enter image description here

以下是我正在使用的示例代码:

  import xlsxwriter
  from datetime import date

  workbook   = xlsxwriter.Workbook("testFile.xlsx")
  worksheet  = workbook.add_worksheet()
  dateFmt    = workbook.add_format({'num_format': 'mm/dd/yyyy'})

  worksheet.write(0, 0, date(2018, 12, 26),dateFmt)
  worksheet.write_formula('B1','=A1', dateFmt, date(2018, 12, 26))

  workbook.close()

2 个答案:

答案 0 :(得分:3)

@Chof是正确的,date()值不被接受为公式值。

相反,您可以使用XlsxWriter datetime_to_excel_datetime()实用程序函数将其转换为Excel日期,即数字:

import xlsxwriter
from datetime import date
from xlsxwriter.utility import datetime_to_excel_datetime

workbook   = xlsxwriter.Workbook("testFile.xlsx")
worksheet  = workbook.add_worksheet()
dateFmt    = workbook.add_format({'num_format': 'mm/dd/yyyy'})

worksheet.write(0, 0, date(2018, 12, 26), dateFmt)

excel_date = datetime_to_excel_datetime(date(2018, 12, 26), False, False)

worksheet.write_formula('B1','=A1', dateFmt, excel_date)

workbook.close()

答案 1 :(得分:2)

问题出在第9行:

  

worksheet.write_formula(' B1',' = A1',dateFmt,date(2018,12,26))

在这里,您为最后一个可选参数date(2018, 12, 26)提供了value,但这不是value的可接受格式,因为documentation of XlsxWriter

  

value参数可以是数字,字符串,bool或以下Excel错误代码之一:

     

(...跳过......)