Python Cómo usar ExcelWriter para escribir en una hoja de cálculo existente

Estoy tratando de usar ExcelWriter para escribir / agregar información en un libro de trabajo que contiene varias hojas. La primera vez que uso la función, estoy creando el libro de trabajo con algunos datos. En la segunda llamada, me gustaría agregar alguna información al libro de trabajo en diferentes ubicaciones en todas las hojas.

def Out_Excel(file_name,C,col): writer = pd.ExcelWriter(file_name,engine='xlsxwriter') for tab in tabs: # tabs here is provided from a different function that I did not write here to keep it simple and clean df = DataFrame(C) # the data is different for different sheets but I keep it simple in this case df.to_excel(writer,sheet_name = tab, startcol = 0 + col, startrow = 0) writer.save() 

En el código principal, llamo a esta función dos veces con una columna diferente para imprimir mis datos en diferentes ubicaciones.

 Out_Excel('test.xlsx',C,0) Out_Excel('test.xlsx',D,10) 

Pero el problema es que al hacerlo, la salida es solo la segunda llamada de la función, como si la función sobrescribiera todo el libro de trabajo. ¿Supongo que necesito cargar el libro que ya existe en este caso? ¿Alguna ayuda?

Use load_book desde openpyxl – vea los documentos de xlsxwriter y openpyxl :

 import pandas as pd from openpyxl import load_workbook book = load_workbook('test.xlsx') writer = pd.ExcelWriter('test.xlsx') writer.book = book writer.sheets = dict((ws.title, ws) for ws in book.worksheets) df.to_excel(writer, sheet_name='tab_name', other_params) writer.save() 

También puedes intentar usar el siguiente método para crear tu hoja de cálculo de Excel:

 import pandas as pd def generate_excel(csv_file, excel_loc, sheet_): writer = pd.ExcelWriter(excel_loc) data = pd.read_csv(csv_file, header=0, index_col=False) data.to_excel(writer, sheet_name=sheet_, index=False) writer.save() return(writer.close()) 

Prueba esto y déjame saber lo que piensas.