如何将streamlit输出数据框下载为excel文件

Man*_*i M 4 python excel button dataframe streamlit

我想知道是否有任何方法可以使用 Streamlit 按钮将 Streamlit 的输出数据帧下载为 Excel 文件?

Sub*_*rit 6

我建议您编辑您的问题以包含一个最小的可重现示例,以便人们更容易理解您的问题并为您提供帮助。

如果我理解正确的话,这就是答案。基本上,它提供了 2 种将数据下载df为 csv 或 xlsx 的方法。
重要提示:您需要安装xlsxwriter软件包才能使其工作。

import streamlit as st
import pandas as pd
import io

# buffer to use for excel writer
buffer = io.BytesIO()

data = {
    "calories": [420, 380, 390],
    "duration": [50, 40, 45],
    "random1": [5, 12, 1],
    "random2": [230, 23, 1]
}
df = pd.DataFrame(data)

@st.cache
def convert_to_csv(df):
    # IMPORTANT: Cache the conversion to prevent computation on every rerun
    return df.to_csv(index=False).encode('utf-8')

csv = convert_to_csv(df)

# display the dataframe on streamlit app
st.write(df)

# download button 1 to download dataframe as csv
download1 = st.download_button(
    label="Download data as CSV",
    data=csv,
    file_name='large_df.csv',
    mime='text/csv'
)

# download button 2 to download dataframe as xlsx
with pd.ExcelWriter(buffer, engine='xlsxwriter') as writer:
    # Write each dataframe to a different worksheet.
    df.to_excel(writer, sheet_name='Sheet1', index=False)

    download2 = st.download_button(
        label="Download data as Excel",
        data=buffer,
        file_name='large_df.xlsx',
        mime='application/vnd.ms-excel'
    )
Run Code Online (Sandbox Code Playgroud)