Código Espinoza Logo

Cómo Crear una Data Table con Flet y Guardar en Excel

Introducción

En este tutorial, aprenderás a crear una Data Table utilizando Flet y Python. También verás cómo guardar los datos en un archivo Excel. Vamos a construir una aplicación donde puedes ingresar nombres y edades, agregar estos datos a una tabla y luego exportarlos a Excel.

Configuración Inicial

Primero, crea un nuevo archivo de Python llamado app.py. Asegúrate de tener instalada la librería Flet ejecutando pip install flet en tu terminal. Importa Flet y crea la función principal:

import flet as ft

def Main(page: ft.Page):
    page.title = "Data Table en Flet con Excel"
    page.bgcolor = ft.colors.BLUE_GREY_900
    page.horizontal_alignment = ft.HorizontalAlignment.CENTER
    
    titulo = ft.Text("Data Table en Flet", size=24, color=ft.colors.WHITE)
    page.add(titulo)

ft.app(target=Main)

Este código establece el título de la ventana y el color de fondo, y añade un título dentro de la ventana.

Creación de la Data Table

Vamos a crear una tabla de datos. Añade el siguiente código dentro de la función Main:

data_table = ft.DataTable(
        bgcolor=ft.colors.BLUE_GREY_700,
        border=ft.border.all(2, ft.colors.BLUE_GREY_400),
        border_radius=10,
        vertical_lines=ft.border.BorderSide(3, ft.colors.BLUE_GREY_400),
        horizontal_lines=ft.border.BorderSide(1, ft.colors.BLUE_GREY_800),
        columns=[
            ft.DataColumn(ft.Text("ID", color=ft.colors.BLUE_200)),
            ft.DataColumn(ft.Text("Nombre", color=ft.colors.BLUE_200)),
            ft.DataColumn(ft.Text("Edad", color=ft.colors.BLUE_200)),
        ],
        rows=[]
    )
    
    page.add(data_table)

Este código crea una tabla con encabezados para ID, Nombre y Edad. También establece estilos para la tabla.

Agregar Datos a la Tabla

Vamos a crear campos de entrada para el nombre y la edad, y un botón para agregar los datos a la tabla:

nombre_input = ft.TextField(label="Nombre", bgcolor=ft.colors.BLUE_GREY_800, color=ft.colors.WHITE)
edad_input = ft.TextField(label="Edad", bgcolor=ft.colors.BLUE_GREY_800, color=ft.colors.WHITE)

input_container = ft.Row([nombre_input, edad_input])

def agregar_fila(e):
    nueva_fila = ft.DataRow(
        cells=[
            ft.DataCell(ft.Text(str(len(data_table.rows) + 1), color=ft.colors.WHITE)),
            ft.DataCell(ft.Text(nombre_input.value, color=ft.colors.WHITE)),
            ft.DataCell(ft.Text(edad_input.value, color=ft.colors.WHITE)),
        ]
    )
    data_table.rows.append(nueva_fila)
    nombre_input.value = ""
    edad_input.value = ""
    page.update()

agregar_btn = ft.ElevatedButton("Agregar", on_click=agregar_fila, color=ft.colors.WHITE, bgcolor=ft.colors.BLUE)

page.add(input_container, agregar_btn)

Este código crea campos de entrada para el nombre y la edad, y un botón que, al ser presionado, añade una nueva fila a la tabla con los datos ingresados.

Guardar la Tabla en un Archivo Excel

Finalmente, vamos a crear una función para guardar los datos en un archivo Excel:

import openpyxl
from datetime import datetime

def guardar_excel(e):
    wb = openpyxl.Workbook()
    ws = wb.active
    ws.title = "Datos"

    ws.append(["ID", "Nombre", "Edad"])
    for row in data_table.rows:
        ws.append([cell.value for cell in row.cells])
    
    fecha = datetime.now().strftime("%Y%m%d_%H%M%S")
    archivo_nombre = f"datos_tabla_{fecha}.xlsx"
    wb.save(archivo_nombre)
    
    page.snack_bar = ft.SnackBar(ft.Text(f"Datos guardados en {archivo_nombre}"), open=True)
    page.update()

guardar_btn = ft.ElevatedButton("Guardar en Excel", on_click=guardar_excel, color=ft.colors.WHITE, bgcolor=ft.colors.GREEN)

page.add(guardar_btn)

Este código crea un archivo Excel, guarda los datos de la tabla en él, y muestra un mensaje de confirmación utilizando una barra de notificaciones.

Conclusión

En este tutorial, hemos aprendido cómo crear una Data Table utilizando Flet y Python, cómo agregar datos a la tabla y cómo guardar los datos en un archivo Excel. Agradezco a los miembros de Patreon y YouTube que con su apoyo hacen posible seguir trayendo contenido al canal. Si te gustó el video, no olvides suscribirte y darle like. ¡Nos vemos en el próximo tutorial!