Renesis Renesis - 3 months ago 209
Python Question

Openpyxl setting number format

Could please someone show an example of applying the number format to the cell. For example, I need scientific format, form would be like '2.45E+05' but I couldn't figure a way how to do that in openpyxl.

I tried in several ways but they are all reporting errors when saving the workbook.

for example:

import openpyxl as oxl

wb = oxl.Workbook()
ws = wb.create_sheet(title='testSheet')
_cell = ws.cell('A1')
_cell.style.number_format = '0.00E+00'


or this (here I'm trying to use some of the predefined number formats, I have also seen there is engineering format in builtins but don't know how to access it:

nf = oxl.style.NumberFormat.FORMAT_NUMBER_00
_cell.style.number_format = nf


I have seen this thread: Setting styles in Openpyxl
but it doesn't help because I don't have to change any other formatting settings.

EDIT

Here is the error:

C:\Python27\openpyxl\cell.pyc in is_date(self)
408 """
409 return (self.has_style
--> 410 and self.style.number_format.is_date_format()
411 and isinstance(self._value, NUMERIC_TYPES))

AttributeError: 'str' object has no attribute 'is_date_format'


In both cases I get the same error.

Answer

Nevermind, I figured it out, it has to be used like this (if using the same code as before):

    _cell.style.number_format.format_code = '0.00E+00' 
Comments