Home » excel » python – pandas set cell format in excel writer

python – pandas set cell format in excel writer

Posted by: admin May 14, 2020 Leave a comment

Questions:

I am using pandas to read and write excel files with python (xlsx files, using openpyxl). Part of my data is text that looks like numbers. For instance, in the original excel file, I have a cell

123456789012345

and it imports fine as text in python. However, if I write the excel file again, the output cell has format ‘General’ and shows as

1.23e14

So my question is: Is there any way to set the number format in pandas? I would like to set it to ‘@’, i.e., to openpyxl.styles.NumberFormat.FORMAT_TEXT.

Unfortunately, the documentation of pandas.ExcelWriter is not so advanced (i.e., it does not exist).

Thank you for your help.

How to&Answers:

I think in the worst case you can manipulate cells directly. I don’t have Excel installed but maybe you can check if this works.

In [67]: df=pd.DataFrame ([123456789012345])

In [68]: writer = pd.ExcelWriter ('e.xlsx', engine='openpyxl')

In [69]: df.to_excel (writer, 'sheet1')

In [70]: ws = writer.sheets['sheet1']

In [71]: ws['A1'].style.number_format.format_code='@'

In [72]: writer.save ()

In [73]: pd.read_excel ('e.xlsx')
Out[73]: 
                 0
0  123456789012345