Hi @A2-Response,
Certainly. I’ll show you how to use st.download_button
to do the job. You’ll have to install the xlsxwriter
package and/or add it to your requirements file.
I’ll use xlsxwriter
's official example: Pandas Excel with multiple dataframes and an example from the pandas docs to write the Excel file to RAM:
Code
import streamlit as st
import pandas as pd
import io
buffer = io.BytesIO()
# Create some Pandas dataframes from some data.
df1 = pd.DataFrame({'Data': [11, 12, 13, 14]})
df2 = pd.DataFrame({'Data': [21, 22, 23, 24]})
df3 = pd.DataFrame({'Data': [31, 32, 33, 34]})
# Create a Pandas Excel writer using XlsxWriter as the engine.
with pd.ExcelWriter(buffer, engine='xlsxwriter') as writer:
# Write each dataframe to a different worksheet.
df1.to_excel(writer, sheet_name='Sheet1')
df2.to_excel(writer, sheet_name='Sheet2')
df3.to_excel(writer, sheet_name='Sheet3')
# Close the Pandas Excel writer and output the Excel file to the buffer
writer.save()
st.download_button(
label="Download Excel worksheets",
data=buffer,
file_name="pandas_multiple.xlsx",
mime="application/vnd.ms-excel"
)
Output
Hope this helps!
Happy Streamlit-ing,
Snehan