2012-09-12 53 views
16

Podría agradar a alguien mostrar un ejemplo de aplicación del formato de número a la celda. Por ejemplo, necesito un formato científico, la forma sería como '2.45E + 05' pero no pude encontrar la manera de hacerlo en openpyxl.Formato de número de configuración de Openpyxl

Intenté de varias maneras, pero todas informan de errores al guardar el libro de trabajo.

por ejemplo:

import openpyxl as oxl 

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

o esto (aquí estoy tratando de utilizar algunos de los formatos de números predefinidos, también he visto que hay formato de ingeniería en órdenes internas, pero no saben cómo acceder a ella :

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

que he visto en este tema:. Setting styles in Openpyxl pero no ayuda porque yo no tengo que cambiar cualquier otro ajuste de formato

EDITAR

Aquí está el 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' 

En ambos casos me sale el mismo error.

+1

qué manera ha intentado, y qué errores viste? –

+1

Edité mi publicación, y el error que recibí fue sobre el formato de número que tiene is_date_format establecido en Ninguno o algo así. Lo veré más tarde con más detalle. – Renesis

Respuesta

30

Para las personas que se envían aquí por Google (como yo). La respuesta aceptada no funciona con openpyxl 2.0. El number_format se puede cambiar directamente.

El ejemplo dado se convierte en:

from openpyxl import Workbook 

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

Esta debería ser la respuesta aceptada en este momento. –

+0

En realidad, lo siguiente funcionó para mí: '_cell.number_format = '0'' ' _cell.value = int (x) ' – Jason

+0

Gracias. ¿Soy yo o la documentación de openpyxl es prácticamente inexistente? – otocan

5

No importa, lo he descubierto, que tiene que ser utilizado como esto (si se utiliza el mismo código como antes):

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

Downvoted, porque un OP que cuide aceptaría la (correcta) respuesta correcta. –