Openpyxl setting number format

匿名 (未验证) 提交于 2019-12-03 01:49:02

问题:

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.

回答1:

For people being sent here by Google (like I was). The accepted answer does not work with openpyxl 2.0. The number_format can be changed directly.

The given example becomes:

from openpyxl import Workbook  wb = Workbook() ws = wb.create_sheet(title='testSheet') _cell = ws.cell('A1') _cell.number_format = '0.00E+00' 


回答2:

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'  


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!