Pandas XLSWriter – devuelve en lugar de escribir

Quiero devolver un archivo de Excel desde mi servidor Flask (Python). Este código:

writer = pd.ExcelWriter('filename.xlsx') dataframe.to_excel(writer, index=False) writer.save() 

escribirá el archivo de Excel en el sistema de archivos. ¿Cómo puedo return el archivo en lugar de escribirlo?

Puede escribir los datos de Excel en la memoria utilizando un objeto StringIO o BytesIO .

Este código se copia de la documentación de los pandas aquí :

 # Safe import for either Python 2.x or 3.x try: from io import BytesIO except ImportError: from cStringIO import StringIO as BytesIO bio = BytesIO() # By setting the 'engine' in the ExcelWriter constructor. writer = ExcelWriter(bio, engine='xlsxwriter') df.to_excel(writer, sheet_name='Sheet1') # Save the workbook writer.save() # Seek to the beginning and read to copy the workbook to a variable in memory bio.seek(0) workbook = bio.read()