Herramientas de usuario

Herramientas del sitio


python:excel

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
python:excel [2022/04/09 01:46] – [Creación y borrado de hojas] albertopython:excel [2022/04/27 13:05] (actual) – [Extraer filas y columnas de la hoja] alberto
Línea 89: Línea 89:
 </code> </code>
  
 +==== Extraer valores ====
 +Como hemos visto hasta ahora, la única forma de extraer valores, es con el atributo **value** de una celda (objeto tipo cell). Vamos a ver otra forma de extraer valores en masa.\\
 +
 +Para extraer valores, usamos la propiedad **values** de la hoja, de modo que podemos por ejemplo asignar a una "lista de listas" todos los valores de la hoja, o recorrer con un for una hoja Excel accediendo directamente a sus valores:
 +<code python>
 +datos = list(hoja.values)
 +</code>
 +
 +<code python>
 +for fila in hoja.values:
 +    for valor in fila:
 +        print(valor)
 +</code>
 +
 +Para obtener los valores de filas o columnas, se pueden usar los métodos **iter_rows()** y **iter_cols()** respectivamente, con el atributo **values_only=True**.
 +
 +<code python>
 +for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
 +    print(row)
 +</code>
 ===== Escritura en documentos EXCEL ===== ===== Escritura en documentos EXCEL =====
 ==== Creación y guardado de documentos EXCEL ==== ==== Creación y guardado de documentos EXCEL ====
Línea 112: Línea 132:
 Para eliminar una hoja se usa el operador del: **del libro['nombre_hoja']** Para eliminar una hoja se usa el operador del: **del libro['nombre_hoja']**
 ==== Escribir valores en celdas ==== ==== Escribir valores en celdas ====
 +Escribir valores en una celda es tan sencillo, como escribir en un diccionario: 
 +<code python>
 +import openpyxl
 +wb = openpyxl.Workbook()
 +sheet = wb['Sheet']
 +sheet['A1'] = 'Hello, world!' # Edit the cell's value.
 +sheet['A1'].value    # 'Hello, world!'
 +</code>
  
-===== Estilo de celdas ===== 
  
-===== Fuentes =====+===== Fuentes de celdas ===== 
 +Para fijar las fuentes de las celdas debemos importar la librería adecuada: <code python>from openpyxl.styles import Font</code> 
  
-===== Formulas =====+Para definir un tipo de fuente se utiliza la función **Font()**, que devuelve un objeto de tipo Font que puede ser asignado a una celda.\\
  
 +Font admite los siguientes argumentos:
 +  * **name** String, nombre de la fuente, como 'Calibri', 'Times New Roman', etc.
 +  * **size** Integer, los puntos que definen el tamaño.
 +  * **bold** Boolean, si es negrita.
 +  * **italic** Boolean, si es cursiva.
 +
 +Para asignar el tipo de celda, se asigna la variable tipo Font al atributo **.font** de la celda.
 +===== Fórmulas =====
 +Es tan sencillo como escribir la fórmua como una cadena de texto en la celda correspondiente.
 +Sin embargo, las fórmulas de Excel pueden llegar a ser muy complejas, y puede ser más sencillo usar Python,
 ===== Ajuste de filas y columnas ===== ===== Ajuste de filas y columnas =====
  
 ==== Altura de fila y ancho de columna ==== ==== Altura de fila y ancho de columna ====
 +Los objetos tipo hoja //Worksheet// disponen de los siguientes atributos para definir la altura de filas y ancho de columnas:
 +  * hoja.**row_dimensions[nºFila].height** = tamaño en puntos del alto de fila. Comprendido entre 0 y 409 (el normal es 12.75).
 +  * hoja.**column_dimensions['Letra_columna'].width** = tamaño en caracteres de tamaño 11 puntos del ancho de la columna. Comprendido entre 0 y 255 (el normal es 8.43).
  
-==== Márgenes de celdas ====+Cualquiera que tenga tamaño 0, se oculta. 
 +==== Combinación de celdas ==== 
 +Consiste en la fusión de varias celdas en una sola, o en la división de una celda en más.\\
  
-==== Inmovilizando celdas ====+Para combinar celdas se llama al método hoja.**merge_cells(**'CeldaOrigen:CeldaFin'**)**.
  
 +
 +Para "descombinar" celdas se llama al método hoja.**unmerge_cells(**'CeldaOrigen:CeldaFin'**)**. Las Celdas indicadas vuelven a mostrarse individuales.
 +==== Inmovilizando celdas ====
 +Las hojas tienen el atributo nombreHoja.**freeze_panes**, en el cual se especifica la celda que servirá de vértice para la inmovilización de paneles.\\
 +  * Si su valor es 'A1' o None, no habrá celdas inmovilizadas.
 +  * Si su valor es cualquier otra celda de la primera fila, las celdas inmovilizadas serán las columnas que queden a la izquierda.
 +  * En caso contrario, las celdas inmovilizadas serán las filas que queden por encima, y las columas situadas a su izquierda.
 ===== Gráficas ===== ===== Gráficas =====
 +Procespo para crear gráficas:
 +  - Crear un objeto de tipo //Reference// a partir de una selección rectangular de celdas, donde se encuentran los datos de la gráfica. El objeto //Reference// se crea con el método **openpyxl.chart.Reference()**, a la que se le pasan 3 argumentos:
 +    - La hoja en la que estamos trabajando en un dato de tipo //Worksheet//.
 +    - Una tupla de dos enteros que definenla celda superior izquierda, empezando en 1. Pueden cambiarse definiendo los argumentos opcionales min_col y min_row.
 +    - Una tupla de dos enteros que definenla celda inferior derecha, empezando en 1. Pueden cambiarse definiendo los argumentos opcionales max_col y max_row.
 +  - Crear un objeto de tipo //Series// pasando el objeto //Reference//, con la función seriesObj = **openpyxl.chart.Series(**refObj**,** title='First series'**)**
 +  - Crear un objeto tipo //Chart// con la función: chartObj = **openpyxl.chart.BarChart()**. A este objeto se le puede añadir un título con el atributo **.title**.
 +  - Añadir al objeto //Chart// los datos, en el objeto //Series//:  **chartObj.append(seriesObj)**.
 +  - Añadir el gráfico a la hoja definiendo la celda correspondiente con la esquina superior izquiera, usando la función: sheet.**add_chart(chartObj, 'C5')**.
 +
 +No olvidar guardar la hoja.
 +
python/excel.1649461586.txt.gz · Última modificación: por alberto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki