33

请有人展示一个将数字格式应用于单元格的示例。例如,我需要科学格式,格式类似于“2.45E+05”,但我想不出如何在 openpyxl 中做到这一点。

我尝试了几种方法,但在保存工作簿时它们都报告错误。

例如:

    import openpyxl as oxl

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

或者这个(这里我尝试使用一些预定义的数字格式,我也看到内置有工程格式但不知道如何访问它:

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

在这两种情况下,我都会遇到相同的错误:

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'

我见过这个问题:在 Openpyxl 中设置样式, 但它没有帮助,因为我不必更改任何其他格式设置。

4

4 回答 4

53

这个答案适用于 openpyxl 2.0。(之前接受的答案没有。)

number_format可以直接改。

给定的示例变为:

from openpyxl import Workbook

wb = Workbook()
ws = wb.create_sheet(title='testSheet')
_cell = ws.cell('A1')
_cell.number_format = '0.00E+00'
于 2014-10-13T07:35:26.723 回答
9

注意:此答案适用于早期版本的 openpyxl,但不适用于 openpyxl 2.0

这是如何做到的:

    _cell.style.number_format.format_code = '0.00E+00' 
于 2012-09-13T07:37:19.423 回答
3

要使用 openpyxl 版本 3 (v3.0.9) 直接格式化单元格,需要以下代码:

from openpyxl import Workbook

wb = Workbook()
ws = wb.create_sheet(title='testSheet')

_cell = ws['A1']
_cell.number_format = '0.00E+00'

单元格可以直接格式化如下:

ws['A1'].number_format = '0.00E+00'

文档显示了可用的各种数字格式,并且有很多: https ://openpyxl.readthedocs.io/en/stable/_modules/openpyxl/styles/numbers.html

于 2021-10-09T02:47:26.380 回答
2

对于 openpyxl 版本 2.6.2:请注意,浮动显示取决于在 python shell、空闲或 ipython 会话中时的大小,

>>> 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()

但不要灰心,因为当您使用 MS-Excel 或 LibreOffice-Calc 或 Gnumeric 重新打开电子表格时,“0.000E+00”格式将正确显示。请记住保存工作簿。

于 2019-04-17T07:05:38.540 回答