es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Dataframe de Python a plantilla de Excel con formato

Tengo un dataframe de Python con varios tipos de datos para cada columna. Normalmente lo exporto a un archivo csv regular usando pandas.DataFrame.to_csv, luego lo abro con Excel, copio su contenido y lo pego en una plantilla bien formateada (xltx).

Me preguntaba si puedo escribir el dataframe directamente en la plantilla para que los datos se formateen automáticamente sin los pasos adicionales.

¿Cuál es la mejor manera de hacerlo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible escribir un dataframe de pandas directamente en un archivo de plantilla de Excel. La mejor manera de hacer esto es usando la biblioteca openpyxl. Con openpyxl, puedes cargar un archivo de Excel existente como una plantilla y manipularlo directamente.

    Primero, necesitarás instalar openpyxl usando pip install openpyxl. Luego puedes cargar tu archivo de plantilla usando la función openpyxl.load_workbook:

    import openpyxl
    
    ruta_archivo_plantilla = "ruta/a/la/plantilla.xltx"
    wb = openpyxl.load_workbook(ruta_archivo_plantilla)
    

    Una vez que tengas la plantilla cargada en wb, puedes acceder a cualquier hoja por su nombre o índice, y escribir datos en celdas específicas. Por ejemplo:

    ws = wb.active
    df = pd.DataFrame({'A': [1, 2, 3], 'B': ["manzana", "plátano", "cereza"]})
    for fila in range(2, df.shape[0]+2):
        for col in range(1, df.shape[1]+1):
            letra_columna = openpyxl.utils.get_column_letter(col)
            celda = ws[f"{letra_columna}{fila}"]
            celda.value = df.iloc[fila-2, col-1]
    
    wb.save("salida.xlsx")
    

    En este ejemplo, estamos escribiendo el contenido del dataframe de pandas df en la segunda fila de la hoja activa en el archivo de plantilla. La función get_column_letter se utiliza para convertir el índice de columna entero a su letra de columna de Excel correspondiente.

    Finalmente, guardamos el libro de trabajo modificado en un nuevo archivo. El archivo de salida tendrá el mismo formato que el archivo de plantilla, con los datos poblados en las celdas especificadas.

    Ten en cuenta que la biblioteca openpyxl proporciona muchos otros métodos para manipular archivos de Excel, como fusionar celdas, aplicar formato y crear gráficos. Puedes consultar la documentación oficial de openpyxl para obtener más información.

Comments are closed.