Saltar al contenido

Importar datos de los archivos de Microsoft Excel con Python

Antes de proceder, deberá instalar openpyxl utilizando pip desde la línea de comandos, preferiblemente dentro de un entorno virtual:

1pip instalar openpyxl

Una vez completado, lanza un proyectil Python y escribe lo siguiente:

Importar datos de los archivos de Microsoft Excel con Python
Importar datos de los archivos de Microsoft Excel con Python
1de la importación de Openpyxl Workbook

pitón

A continuación, cree una nueva instancia de Workbook:

1 wb = Libro de trabajo()

pitón

y guardarlo en el directorio de trabajo actual como players.xlsx :

1 wb.save($0027jugadores.xlsx$0027)

pitón

Hasta ahora, todo bien, pero todo lo que hemos hecho es crear una hoja de cálculo vacía, como podemos ver en la Fig. 1:

Ahora vamos a explicar, paso a paso, cómo escribir datos en el archivo.

1) Importar módulos y clases:

12de openpyxl import load_workbook, Workbook from openpyxl.worksheet.table import Table, TableStyleInfo

pitón

2) Definir una función llamada str_to_int_or_float para convertir las cuerdas en enteros o flotantes si es posible (las cuerdas booleanas y las normales se dejan igual). Esto nos permitirá más tarde insertar números en la hoja de cálculo en el formato adecuado.

12345678910defstr_to_int_or_float(valor):ifisinstance(valor,bool):return value try:returnint(valor)except ValueError:try:returnnfloat(valor)except ValueError:return value

pitón

3) Cargar el libro de trabajo, seleccionar la hoja activa y cambiarle el nombre:

123 wb = Libro de trabajo() ws = wb.activo ws.title =$0027Información de los jugadores$0027

pitón

4) Añadir los títulos por separado y luego usar nba_players como fuente de datos:

123 ws.append([$0027Nombre$0027,$0027Apellido$0027,$0027Jersey$0027,$0027Altura [mts]$0027,$0027Año de debut en la NBA$0027,$0027Peso [kgs]$0027]) nba_players =[{$0027nombre$0027:$0027LeBron$0027,$0027apellido$0027:$0027James$0027,$0027jersey$0027:$00272$0027,$0027alturaMeters$0027:$00272. 03$0027,$0027nbaDebutYear$0027:$00272003$0027,$0027pesoKilogramos$0027:$0027113.4$0027},{$0027nombreNombre$0027:$0027LaMarcus$0027,$0027apellidoNombre$0027:$0027Aldridge$0027,$0027jersey$0027:$002712$0027,$0027alturaMetros$0027:$00272. 11$0027,$0027nbaAñoDebutante$0027:$00272006$0027,$0027pesoKilogramos$0027:$0027117.9$0027},{$0027nombre$0027:$0027Kawhi$0027,$0027apellidoNombre$0027:$0027Leonard$0027,$0027jersey$0027:$00272$0027,$0027alturaMetros$0027:$00272.01$0027,$0027nbaAñoDebutante$0027:$00272011$0027,$0027pesoKilogramos$0027:$0027104. 3$0027},{$0027nombreNombre$0027:$0027Jabari$0027,$0027apellidoNombre$0027:$0027Parker$0027,$0027jersey$0027:$00272$0027,$0027alturaMetros$0027:$00272.03$0027,$0027nbaAñoDebutante$0027:$00272014$0027,$0027pesoKilogramos$0027:$0027111.1$0027}]

pitón

Dado que cada elemento de nba_players es un diccionario, podemos acceder a sus valores con el método .values(). A continuación, ejecutamos str_to_int_or_float en cada valor usando la función de mapa incorporada en Python. Finalmente, convertimos el resultado en una lista.

12para el jugador en nba_players: ws.append(list(map(str_to_int_or_float, player.values()))

pitón

La figura 2 ilustra este paso utilizando un jugador:

Aunque esto puede parecer complicado al principio, se convierte en algo natural después de un poco de práctica.

5) Crear una tabla de Excel que comience en A1 y termine en la última celda no vacía:

12 última_célula = ws.cell(row = ws.max_row, column = ws.max_column).coordinate mesa_jugadora = Tabla(displayName =$0027PlayerTable$0027, ref =$0027A1:{}$0027.format(last_cell))

pitón

6) Estilizar la tabla y añadirla a la hoja de cálculo. Ten en cuenta que puedes usar cualquiera de los estilos de tabla disponibles en tu versión de Excel (usaremos Table Style Medium 6 aquí) sin espacios en su nombre. Finalmente, guarda los cambios.

1234 style = TableStyleInfo(name =$0027TableStyleMedium6$0027, showRowStripes=True) player_table.tableStyleInfo = style ws.add_table(player_table) wb.save($0027players.xlsx$0027)

pitón

Veamos en la Fig. 3 cómo debería ser la hoja de cálculo después de redimensionar las columnas para una mejor visualización:

Como puede ver, los filtros fueron añadidos automáticamente en la mesa para su conveniencia. En este momento puede crear gráficos basados en esta tabla o manipularla como desee, ya sea a través de Excel o de forma programada, como veremos a continuación.