编写xlsx文件时编号而不是日期字符串

时间:2016-08-26 19:34:12

标签: python libreoffice xlsxwriter

在LibreOffice xlsx单元格中,值如下:01/13/2016。 当我使用python2创建一个新的xlsx文件时,那个01/13/2016正在转换为42461。

python代码:

sheet1.write(row,col,sheet.cell(row,col).value) 
tab_matching = 0
for sheet_name in book.sheet_names():   

temp_sheet_name = sheet_name.lower()
if temp_sheet_name == tab_name: 
    tab_matching = 1

    sheet = book.sheet_by_name(sheet_name)
    temp_sheet_name = file_prefix+part_file_name+"_"+file_type+".xlsx"
    if os.path.exists(detail_path):
        xlsx_file_name = detail_path+"/"+temp_sheet_name
    else:
        xlsx_file_name = dirname+"/"+temp_sheet_name

    new_book = xlsxwriter.Workbook(xlsx_file_name)
    sheet1 = new_book.add_worksheet()


    for row in range(sheet.nrows):

        for col in range(sheet.ncols):  
            sheet1.write(row,col,sheet.cell(row,col).value)     

    new_book.close()

你能告诉我为什么会这样吗?

2 个答案:

答案 0 :(得分:2)

42461是04/01/2016的基础日期值。要显示日期而不是数字,请指定日期格式:

format1 = new_book.add_format({'num_format': 'mm/dd/yyyy'})
sheet1.write('B1', 42461, format1)  # 04/01/2016
sheet1.write('B2', 42382, format1)  # 01/13/2016

文档位于http://xlsxwriter.readthedocs.io/working_with_dates_and_time.html

答案 1 :(得分:0)

你可以这样做。

UNSIGNED_SHORT