Saltar al contenido

¿Cómo escribir en un archivo de Excel abierto usando Python?

Solución:

Si es usuario de Windows, existe una forma muy sencilla de hacerlo. Si usamos el Biblioteca Win32 podemos aprovechar el modelo VBA de objetos de Excel integrado.

Ahora, no estoy seguro exactamente de cómo se ven sus datos o dónde los quiere en el libro de trabajo, pero simplemente asumiré que los quiere en la hoja que aparece cuando abre el libro de trabajo.

Por ejemplo, imaginemos que tengo un DataFrame de Panda que quiero escribir en un libro de Excel abierto. Le gustaría lo siguiente:

import win32com.client
import pandas as pd

# Create an instance of the Excel Application & make it visible.
ExcelApp = win32com.client.GetActiveObject("Excel.Application")
ExcelApp.Visible = True

# Open the desired workbook
workbook = ExcelApp.Workbooks.Open(r"<FILE_PATH>")

# Take the data frame object and convert it to a recordset array
rec_array = data_frame.to_records()

# Convert the Recordset Array to a list. This is because Excel doesn't recognize 
# Numpy datatypes.
rec_array = rec_array.tolist()

# It will look something like this now.
# [(1, 'Apple', Decimal('2'), 4.0), (2, 'Orange', Decimal('3'), 5.0), (3, 'Peach', 
# Decimal('5'), 5.0), (4, 'Pear', Decimal('6'), 5.0)]

# set the value property equal to the record array.
ExcelApp.Range("F2:I5").Value = rec_array

Nuevamente, hay muchas cosas que debemos tener en cuenta en cuanto a dónde queremos que se pegue, cómo se formatean los datos y una gran cantidad de otras cuestiones. Sin embargo, al final del día, es posible escribir en un archivo de Excel abierto usando Python si es un usuario de Windows.

Generalmente, dos procesos diferentes no deberían escribir en el mismo archivo porque causarán problemas de sincronización.

Una mejor manera sería cerrar el archivo existente en el proceso principal (también conocido como código VBA) y pasar la ubicación del libro de trabajo a la secuencia de comandos de Python.

El script de Python lo abrirá y escribirá el contenido en la celda y saldrá.

No, esto no es posible porque los archivos de Excel no admiten el acceso simultáneo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *