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.
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
Tags: excel, pandas, pythonpython