首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Openpyxl设置数字格式

Openpyxl设置数字格式
EN

Stack Overflow用户
提问于 2012-09-12 19:32:31
回答 3查看 62.1K关注 0票数 32

请给出一个将数字格式应用到单元格的例子。例如,我需要科学的格式,表单就像'2.45E+05‘,但我想不出在openpyxl中怎么做。

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

例如:

代码语言:javascript
复制
    import openpyxl as oxl

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

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

代码语言:javascript
复制
    nf = oxl.style.NumberFormat.FORMAT_NUMBER_00
    _cell.style.number_format = nf

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

代码语言:javascript
复制
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'

我看过这个问题:Setting styles in Openpyxl,但它没有帮助,因为我不需要更改任何其他格式设置。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-13 15:35:27

这个答案适用于openpyxl 2.0。( previously accepted answer不支持。)

可以直接更改number_format

给定的示例变成:

代码语言:javascript
复制
from openpyxl import Workbook

wb = Workbook()
ws = wb.create_sheet(title='testSheet')
_cell = ws.cell('A1')
_cell.number_format = '0.00E+00'
票数 52
EN

Stack Overflow用户

发布于 2021-10-09 02:47:26

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

代码语言:javascript
复制
from openpyxl import Workbook

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

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

可以按如下方式直接设置单元格的格式:

代码语言:javascript
复制
ws['A1'].number_format = '0.00E+00'

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

票数 3
EN

Stack Overflow用户

发布于 2019-04-17 15:05:39

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

代码语言:javascript
复制
>>> 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()

但不要灰心,因为'0.000E+00‘格式将正确显示时,您重新打开电子表格与MS-Excel或LibreOffice或Gnumeric。只需记住保存工作簿。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12387212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档