cotizador / excel.py
forviaapps's picture
Rename app.py to excel.py
c1b5f8f verified
Raw
History Blame Contribute Delete
2.23 kB
import gradio as gr
from openpyxl import load_workbook, Workbook
# Funci贸n para leer las columnas A y B del archivo Excel
def leer_excel(ruta):
wb = load_workbook(ruta)
sheet = wb.active
data = []
for row in sheet.iter_rows(min_row=2, max_col=2, values_only=True): # Solo las primeras dos columnas
columna_a, columna_b = row
if columna_a is not None and columna_b is not None:
data.append([columna_a, columna_b])
return data
# Funci贸n para agregar datos y guardar el archivo Excel modificado
def agregar_y_guardar(data, nuevo_a, nuevo_b):
# Cargar el archivo existente o crear uno nuevo
wb = load_workbook('template_pcb.xlsx')
sheet = wb.active
# Agregar el nuevo valor al final del archivo Excel
nueva_fila = [nuevo_a, nuevo_b]
sheet.append(nueva_fila)
# Guardar el archivo modificado con un nuevo nombre
archivo_salida = "template_pcb_modificado.xlsx"
wb.save(archivo_salida)
return archivo_salida # Devolver la ruta del archivo guardado
# Leer los datos iniciales del archivo Excel
data = leer_excel('template_pcb.xlsx')
# Crear la interfaz de Gradio
def crear_formulario(data):
with gr.Blocks() as demo:
# Mostrar la tabla con los datos actuales
tabla = gr.Dataframe(value=data, interactive=True, col_count=2, headers=["Columna A", "Columna B"],
type="array", row_count=5)
# Campos para agregar nuevos valores
nuevo_a = gr.Textbox(label="Nuevo valor para Columna A")
nuevo_b = gr.Textbox(label="Nuevo valor para Columna B")
agregar_boton = gr.Button("Agregar nuevo valor y guardar Excel")
# Campo para mostrar el enlace de descarga
archivo_descarga = gr.File(label="Descargar archivo modificado")
# Cuando se hace clic en el bot贸n, agrega los valores y guarda el Excel modificado
agregar_boton.click(
agregar_y_guardar,
inputs=[tabla, nuevo_a, nuevo_b],
outputs=archivo_descarga
)
return demo
# Crear la interfaz de Gradio
demo = crear_formulario(data)
# Lanzar la interfaz
demo.launch()