Utilice win32com para abrir un archivo de Excel con fórmulas, agregue un poco de retardo, y guárdelo como CSV.
Tengo un archivo de Excel que tiene un montón de fórmulas. Se necesita un tiempo para que las fórmulas carguen correctamente (entre 1 y 2 minutos), por lo que estoy tratando de agregar una pausa entre la apertura del archivo y la grabación del archivo cargado. Después de esto, espero guardar una copia del archivo de Excel completamente cargado como un nuevo CSV con un nombre diferente, para que tenga tanto el archivo de Excel completamente cargado como el nuevo archivo CSV.
Para ser claro, estoy tratando de hacer las siguientes tareas en este orden:
- Abra el archivo de Excel
- Agregue una pausa de ~1-2 minutos
- Guarde el archivo de Excel completamente cargado
- Guarde una copia del archivo de Excel completamente cargado como un CSV con un nombre diferente.
He logrado hacer los Pasos 1 y 3 que se ven a continuación, pero tengo problemas con los Pasos 2 y 4. He notado que el Paso 2 es bastante importante, ya que la forma en que mi código está escrito actualmente no permite suficiente tiempo para que las fórmulas se carguen, lo que lleva a un archivo incompletamente cargado.
¿Cuál es la mejor manera de hacer los Pasos 2 y 4, es decir, agregar una pausa y luego guardar el archivo completo como CSV?
import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
# Abre el archivo indicado por PATH
workbook = excel.Workbooks.Open(PATH)
# Guarda el archivo
workbook.Save()
# Cierra y sale de Excel
workbook.Close()
excel.Quit()
Tenga en cuenta que este código se basa en esta publicación.
davy.ai
Para agregar un retraso entre la apertura del archivo Excel y guardar el archivo completamente cargado, se puede usar la función
time.sleep ()
del módulotime
. Por ejemplo, para agregar un retraso de 2 minutos, puede usartime.sleep (120)
después de abrir el libro de trabajo:Para guardar una copia del archivo de Excel completamente cargado como CSV con un nombre diferente después del retraso, se puede usar el método
SaveAs ()
del objeto de libro de trabajo. El primer argumento es la ruta del archivo del nuevo archivo, y el segundo argumento especifica el formato del archivo. Puede usar6
para el formato de archivo CSV.En general, el código modificado debería verse como el de arriba.