2016-08-26 5 views
1

Dans une cellule LibreOffice xlsx, la valeur est la suivante: 13/01/2016. Quand je suis en train de créer un nouveau fichier XLSX en utilisant python2, alors que 13/01/2016 est la conversion à 42461.nombre au lieu de la date string lors de l'écriture du fichier xlsx

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

Pourriez-vous me dire pourquoi ce qui se passe?

+1

Pouvez-vous coller le code? –

+1

La cellule n'est probablement pas formatée en tant que date. – bravosierra99

+0

Convertissez-le en une chaîne, puis écrivez la valeur de la piqûre. –

Répondre

2

42461 est la valeur sous-jacente pour le 04/01/2016. Pour afficher la date au lieu du numéro, spécifiez un format de date:

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 

La documentation est à http://xlsxwriter.readthedocs.io/working_with_dates_and_time.html.

+0

Excellent .. Exactement je voulais cela. – Samiul

0

Vous pourriez le faire.

>>> import datetime 
>>> today=datetime.datetime.now() 
>>> today 
datetime.datetime(2016, 8, 27, 1, 7, 1, 909049) 
>>> value=today.strftime("%d/%m/%Y") 
'27/08/2016' 
>>> sheet1.write(row,col,sheet.cell(row,col).value) 
+0

vous copiez le paste à partir d'un autre article. – Samiul

+0

Si vous saviez que plus tôt, qu'il y avait un autre poste, pourquoi avez-vous posé la question quand vous saviez que la réponse était là? –

+0

Désolé, cela ne fonctionne pas. Veuillez lire mon message attentivement. Ne perdez pas de temps ici. – Samiul