2012-09-12 56 views
16

可以请别人展示将数字格式应用于单元格的示例。例如,我需要科学的格式,形式会像'2.45E + 05',但我无法想象如何在openpyxl中做到这一点。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 

我已经看到了这个线程:Setting styles in Openpyxl 但它并没有帮助,因为我没有更改任何其他格式设置

编辑

以下是错误:

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' 

在这两种情况下,我得到同样的错误。

+1

你尝试过什么方式,以及哪些错误你有没有看到? –

+1

我编辑了我的帖子,我得到的错误是有关is_date_format设置为无或类似的数字格式。我稍后会更详细地检查它。 – Renesis

回答

30

对于人被送到这里,由谷歌(像我)。接受的答案不适用于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' 
+2

这应该是现在接受的答案。 –

+0

其实,以下对我有效: '_cell.number_format ='0'' '_cell.value = int(x)' – Jason

+0

谢谢。是我还是openpyxl文档几乎不存在? – otocan

5

没关系,我理解了它,它有这样的使用(如果像以前一样使用相同的代码):

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

Downvoted,因为关怀OP将接受(现在)正确的答案。 –