python - 从 Streamlit 下载 python-pptx

标签 python streamlit python-pptx

我正在使用python-pptxstreamlit 。我正在从 python 创建一个 ppt,如下所示:

from pptx import Presentation
import streamlit as st

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]

title.text = "Hello, World!"
subtitle.text = "python-pptx was here!"

#prs.save('test.pptx') # This works, just saves it in the app path.
# But I want a clickable button, to be downloaded from the streamlit app.
# Therefore, I've tried to do this: 

st.download_button(label = 'Download ppw', data = prs, file_name = 'my_power.ppt')

但我收到以下错误:

RuntimeError: Invalid binary data format: <class 'NoneType'>

重现要求:

安装streamlit(pip install Streamlit)

安装 python-pptx (pip install python-pptx)

最佳答案

我的灵感来自this answer我知道您必须为您的Presentation对象生成二进制表示

from pptx import Presentation
import streamlit as st
from io import BytesIO

prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]

title.text = "Hello, World!"
subtitle.text = "python-pptx was here!"

# save the output into binary form
binary_output = BytesIO()
prs.save(binary_output) 

st.download_button(label = 'Download ppw',
                   data = binary_output.getvalue(),
                   file_name = 'my_power.pptx')

关于python - 从 Streamlit 下载 python-pptx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71786130/

相关文章:

python sqlalchemy动态获取列名?

python - 为什么 Streamlit 找不到我的 python 文件?

python - 属性错误: 'ColumnTransformer' object has no attribute '_name_to_fitted_passthrough'

python - 无法将单元格内或 pptx 中的某些表格内的文本翻译为其他语言

python PPTX : Adding Entire Slide from Another Presentation

python - 如何使用 Python 将 Excel 图表粘贴到 PowerPoint 占位符中?

python - django中计数器的原子增量

python - 使用 RapydScript 通过 Python 和 DOM 进行简单的图像旋转

python - 为什么未指定的 Python 多处理调用代码?

hosting - Streamlit 托管