如何在Streamlit应用中添加可供下载的Excel/CSV示例文件?
在Streamlit应用中添加可下载的示例文件
要给Streamlit应用加用户可下载的格式示例文件,用官方的st.download_button组件就能轻松实现,分两步走:
1. 准备示例文件
把你的示例文件(比如example.csv、template.xlsx这类格式模板)放在Streamlit脚本的同一目录下,或者记好文件的绝对路径,方便后续读取。
2. 实现下载功能
直接用st.download_button组件,核心是读取文件内容、设置正确的文件名和MIME类型,下面是实用代码示例:
示例1:下载静态本地文件(如提前准备好的CSV)
import streamlit as st st.header("格式示例下载区") # 读取本地CSV示例文件 with open("example.csv", "rb") as file: csv_content = file.read() # 创建下载按钮 st.download_button( label="👉 下载CSV格式示例", data=csv_content, file_name="sample_format.csv", mime="text/csv" )
示例2:动态生成并下载示例文件(如Excel模板)
如果需要动态生成示例(比如基于预设结构生成DataFrame),可以直接生成后导出为文件流:
import streamlit as st import pandas as pd # 生成示例DataFrame sample_df = pd.DataFrame({ "姓名": ["张三", "李四"], "年龄": [25, 30], "部门": ["技术部", "市场部"] }) # 将DataFrame转为Excel流 excel_buffer = pd.io.common.BytesIO() sample_df.to_excel(excel_buffer, index=False, engine="openpyxl") excel_buffer.seek(0) # 创建Excel下载按钮 st.download_button( label="👉 下载Excel格式模板", data=excel_buffer, file_name="employee_template.xlsx", mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" )
关键参数说明
data:可以是本地文件读取的二进制内容,也可以是动态生成的文件流(如上面的Excel缓冲流)file_name:用户下载时看到的默认文件名,建议明确标注格式mime:对应文件的MIME类型,确保浏览器正确识别文件,常见类型参考:- CSV:
text/csv - Excel(xlsx):
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - JSON:
application/json - 纯文本:
text/plain
- CSV:
内容的提问来源于stack exchange,提问作者Kas
相关产品推荐
相关产品推荐

