Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to set a column to DATE format in xlsxwriter

I am working on a project where I am writing out onto an xlsx spreadsheet and need to format the one column for 'Date'. I get the program to run and all but the column format is still set to 'General'.

Try this in a different way with different code to see if anyone answers.:

for row in cur.execute('''SELECT `Mapline`,`Plant`,`Date`,`Action` from AEReport'''):
    lengthOfHeadings = len(row)
    output = '%s-%s.xlsx' % ("AEReport",now.strftime("%m%d%Y-%H%M"))
    workbook = xlsxwriter.Workbook(output, {'strings_to_numbers':True})
    worksheet = workbook.add_worksheet()

    format=workbook.add_format({'font_size':'8','border':True})
    format2=workbook.add_format({'font_size':'8','border':True,'num_format':'mm/dd/yy hh:mm'})
    count = 0
    for name in range(0,lengthOfHeadings):
        if name==row[2]:
            name=int(name)
            worksheet.write(counter, count, row[name],format2)
    else:
        worksheet.write(counter, count, row[name],format)
    count += 1
counter += 1

Slihthinden

like image 560
Slihthinden Avatar asked Apr 05 '16 20:04

Slihthinden


People also ask

How do I show datetime in Excel?

On the Home tab, in the Number group, click the Dialog Box Launcher next to Number. You can also press CTRL+1 to open the Format Cells dialog box. In the Category list, click Date or Time. In the Type list, click the date or time format that you want to use.


2 Answers

To get the date time format working, you would have to get the date value converted to a excel serial date value.

Here is an example showing how does it work:

import pandas as pd
data = pd.DataFrame({'test_date':pd.date_range('1/1/2011', periods=12, freq='M') })
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')

data.test_date = data.test_date - pd.datetime(1899, 12, 31)

pd.core.format.header_style = None    
data.to_excel(writer, sheet_name='test', index=False)

workbook  = writer.book
worksheet = writer.sheets['test']

formatdict = {'num_format':'mm/dd/yyyy'}
fmt = workbook.add_format(formatdict)

worksheet.set_column('A:A', None, fmt)

writer.save()

This is how the output will look like: enter image description here

like image 147
Abbas Avatar answered Oct 12 '22 13:10

Abbas


from datetime import datetime

date_format = workbook.add_format({'num_format':'yyyy-mm-dd hh:mm:ss'})

worksheet.write(0, 0, datetime.today(),date_format)

result: image from Excel Generated

like image 33
RITA KUSHWAHA Avatar answered Oct 12 '22 12:10

RITA KUSHWAHA