Utilizo pandas para escribir en un archivo de Excel de la siguiente manera:
import pandas
writer = pandas.ExcelWriter('Masterfile.xlsx')
data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])
writer.save()
Masterfile.xlsx ya consta de varias pestañas diferentes. Sin embargo, todavía no contiene "Main".
Pandas escribe correctamente en la hoja "Principal", desafortunadamente también elimina todas las demás pestañas.
ExcelReader
Respuestas:
Pandas docs dice que usa openpyxl para archivos xlsx. Un vistazo rápido al código en
ExcelWriter
da una pista de que algo como esto podría funcionar:fuente
openpyxl
y proporcionar suficientes detalles: qué tipo de fórmulas tiene, cómo se actualizan los datos, cómo frenan las fórmulas. Ahora simplemente no puedo ayudar, hay demasiadas cosas que no sé.Aquí hay una función auxiliar:
NOTA: para Pandas <0.21.0, reemplace
sheet_name
consheetname
!Ejemplos de uso:
fuente
Con la
openpyxl
versión2.4.0
y lapandas
versión0.19.2
, el proceso que se le ocurrió a @ski se vuelve un poco más simple:fuente
A partir de pandas 0.24, puede simplificar esto con el
mode
argumento de palabra clave deExcelWriter
:fuente
mode = 'a'
agrega más hojas, pero ¿qué sucede si quiero sobrescribir datos en las hojas existentes?Antigua pregunta, pero supongo que algunas personas todavía buscan esto, así que ...
Encuentro este método agradable porque todas las hojas de trabajo se cargan en un diccionario de pares de nombre de hoja y marco de datos, creado por pandas con la opción sheetname = None. Es simple agregar, eliminar o modificar hojas de trabajo entre leer la hoja de cálculo en el formato dict y escribirla desde el dict. Para mí, xlsxwriter funciona mejor que openpyxl para esta tarea en particular en términos de velocidad y formato.
Nota: las versiones futuras de pandas (0.21.0+) cambiarán el parámetro "sheetname" a "sheet_name".
Para el ejemplo de la pregunta de 2013:
fuente
Sé que este es un hilo más antiguo, pero este es el primer elemento que encuentra al buscar, y las soluciones anteriores no funcionan si necesita retener gráficos en un libro de trabajo que ya ha creado. En ese caso, xlwings es una mejor opción: le permite escribir en el libro de Excel y mantiene los gráficos / datos del gráfico.
ejemplo simple:
fuente
Hay una mejor solución en pandas 0.24:
antes de:
después:
así que actualiza tus pandas ahora:
fuente
XslxWriter
opción.engine=openpyxl
ya que solo agregará una nueva hoja de trabajo llamadathe only worksheet1
Esto funciona perfectamente bien, lo único es que se pierde el formato del archivo maestro (archivo al que agregamos una nueva hoja).
fuente
Espero que el "keep_date_col" te ayude
fuente
fuente
Método:
Uso:
fuente