Openpyxl setting number format

后端 未结 3 860
暖寄归人
暖寄归人 2020-12-15 03:31

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

相关标签:
3条回答
  • 2020-12-15 04:01

    This answer works with openpyxl 2.0. (The previously accepted answer does not.)

    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'
    
    0 讨论(0)
  • 2020-12-15 04:09

    For openpyxl version 2.6.2: note the float display depends on the magnitude when in a python shell, or idle, or ipython session,

    >>> wb = load_workbook('tmp.xlsx')
    >>> ws = wb[wb.sheetnames[0]]
    >>> c21 = ws.cell(2,1)
    >>> c21.value
    '43546'
    >>> c21.value = int(c21.value)
    >>> c21.value
    43546
    >>> c21.value = 134352345235253235.235235
    >>> c21.number_format = '0.000E+00'
    >>> c21.value
    1.3435234523525323e+17
    >>> c21.value = 534164134.6643
    >>> c21.value
    534164134.6643
    >>> wb.save('tmp_a.xlsx')
    >>> wb.close()
    

    But do not be dismayed, because the '0.000E+00' format will be displayed correctly when you re-open the spreadsheet with MS-Excel or LibreOffice-Calc or Gnumeric. Just remember to save the workbook.

    0 讨论(0)
  • 2020-12-15 04:22

    Note: this answer worked with earlier versions of openpyxl, but does not work with openpyxl 2.0

    This is how to do it:

        _cell.style.number_format.format_code = '0.00E+00' 
    
    0 讨论(0)
提交回复
热议问题