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:
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.