Acceso a registros
La facilidad con la que se crean soportes para registro de datos en el servicio Hoja de cálculo (Calc o Excel, que también en esto son iguales), hace que sea frecuente encontrar este sistema como recurso aplicado a diferentes pruebas. En realidad se usa menos de lo que cabría esperar y sería de desear, pero aun así su uso es relativamente frecuente. Por lo visto en la [entrada anterior] también es sencillo crear estos registros mediante Python (OpenPyXL).
Y, claro está, no tiene mucho sentido tomarse el tiempo necesario para generar este sistema de registro si después no vamos a hacer uso de él. En tiempos en los que se trataba únicamente de digitalizar el registro de los resultados de la evaluación, la consulta del mismo era directa y sobre el soporte y los cálculos que se pudieran implementar en él mediante fórmulas propias, servían para construir el informe de resultados.
Pero si implementamos procedimientos de automatización del informe, ese almacenamiento de registros puede resultar innecesario, salvo que pensemos en procesos posteriores de análisis de datos. Y es en esto en lo que actualmente estamos, a caballo entre la sección Evaluación y la sección (análisis de) Datos, en lo que a la estructura de este blog se refiere.
El objetivo de esta entrada es plantear en Python un sistema que permita acceder de forma automática a un determinado conjunto de registros de datos soportados sobre Excel (con independencia de que originalmente sean documentos Calc o Excel, ya que, como sabemos, la conversión de unos en otros es factible mediante LibreOffice). Es, como se puede deducir, un procedimiento complementario al desarrollado en la propuesta formulada en la [entrada anterior], motivo por el que se puede afirmar que dicha propuesta forma parte (y es la parte primera) de un procedimiento de doble acceso, por más que, en cuanto a script, resulte más apropiado diferenciar uno de otro, y en consecuencia, también en cuanto a entrada del blog.
El uso de este procedimiento para acceder a un registro individual puede estar justificado en ciertos casos, pero en la mayoría se trata de acceder a un conjunto de registros iguales para analizar determinado subconjunto de datos de los mismos. En sentido estricto, por tanto, se trata más de una cuestión que afecta a la sección Datos, que a Evaluación, pero por continuidad con la temática en que se enmarca la mantendré en ésta.
Partimos pues de la necesidad de trabajar con una lista de nombres de archivo, lo que nos obliga a modificar el planteamiento de trabajo expuesto [en la entrada] en la que se expuso el modo de acceder a hojas de cálculo mediante OpenPyXL, aunque podremos aprovechar estos procedimientos para resolver nuestra tarea actual.
Otro requisito previos es tener bien definido el objetivo de trabajo y conocer el documento de referencia para establecer correctamente el conjunto de hojas y celdas a las que debemos acceder.
Para ejemplificar este propuesta, crearé un conjunto de 10 registros con el script de la entrada precedente. Lo que me propongo es acceder a esos registros (libros Excel) y, en ellos, al nombre del alumno, a la puntuación que obtiene en uno de los ítem y al sumatorio PD. Este es el scritp necesario.
from openpyxl import load_workbooklista_al = ['Jaime','Lorenzo','Maria','Juan','Antonio','Lucrecia','Marcos','Susana','Noemi','Javier']nombres = []item3 = []pdt = []for i in range(0,9):libro = load_workbook(filename = 'Reg_'+lista_al[i]+'.xlsx')hoja =libro['Sheet']celda_nom = hoja['B2'].valueprint (celda_nom)nombres.append(celda_nom)celda_it3 = hoja['G4'].valueprint(celda_it3)item3.append(celda_it3)celda_pd = hoja['J2'].valueprint(celda_pd)pdt.append(celda_pd)
- Primero accedo al contenido de la librería que contiene las funciones de acceso a libros Excel (from openpyxl import load_workbook)
- Después creo una lista con los identificadores de los archivos a los que deseo acceder...
- ... y tres listas vacías más, una para cada colección de datos (vg. nombres = [])
- Mediante una estructura de bucle (for i in range(0,9):) genero un proceso cíclico que recorriendo la lista de libros (lista_al) libro = load_workbook(filename = 'Reg_'+lista_al[i]+'.xlsx')) y estableciendo la hoja Sheet como hoja activa (hoja =libro['Sheet']), carga en una variable el contenido de las celdas seleccionadas (vg. celda_nom = hoja['B2'].value) y lo añade mediante la función append() al final de la lista creada previamente (vg. nombres.append(celda_nom))
(La función print() (print (celda_nom)) sirve únicamente para verificar el funcionamiento, por lo que se puede comentar en el script definitivo).
Con esto únicamente hemos accedido al contenidos predefinido de múltiples libros Excel, y resta tratar esos datos del modo que se desee, pero esa es una cuestión que ahora no tiene mayor importancia, por lo que, una vez alcanzado el objetivo propuesto, podemos dar por finalizado el script, si bien deberemos retomarlo (y modificarlo) para un objetivo concreto.
Documento. Aunque repetitivo con el contenido de la entrada, este enlace te da acceso al script que explico en ella. Su correcto funcionamiento presupone que tiene creados los libros que resultan del desarrollo de la función load_workbook(), los cuales se generan mediante el [este otro script]. Los script y los libros Excel están ubicados en el mismo directorio. Para probar el funcionamiento del script debes hacerlo desde el IDE de Python, no desde el cmd (símbolo de sistema).
No hay comentarios:
Publicar un comentario
Comenta esta entrada