0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

st_word_excel_download

Posted at
import streamlit as st
import docx
from io import BytesIO
import pandas as pd

def main():

    # Streamlitアプリケーション
    st.title("word出力")

    # Documentオブジェクトを作成
    doc = docx.Document()

    # 1ページ目
    with st.expander('1ページ目', expanded=True):
        page1_title = 'サンプルドキュメント'
        page1_body = st.text_area("ここに入力してください:", height=100, key='page1_body')

        # ドキュメントの内容を追加
        doc.add_heading(page1_title, 0)
        doc.add_paragraph(page1_body)

    # 2ページ目
    with st.expander('2ページ目', expanded=True):
        page2_title = 'サンプルドキュメント'
        page2_body = st.text_area("ここに入力してください:", height=100, key='page2_body')

        doc.add_heading('セクション1', level=1)
        doc.add_paragraph('ここにセクション1の内容が入ります。')
        doc.add_heading('セクション2', level=1)
        doc.add_paragraph('ここにセクション2の内容が入ります。')

    # バイナリストリームへの保存
    bio = BytesIO()
    doc.save(bio)

    # ストリームの位置を先頭に戻す
    bio.seek(0)

    # ダウンロードボタンの表示
    st.download_button(
        label="Wordファイルをダウンロード",
        data=bio.getvalue(),
        file_name="prepared_document.docx",
        mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
    )


    # サンプルデータを作成
    data = {
        '名前': ['Alice', 'Bob', 'Charlie', 'David'],
        '年齢': [25, 30, 35, 40],
        '職業': [
            'エンジニア', 
            'デザイナー', 
            'マネージャー', 
            'アナリスト'
        ],
        '備考': [
            '長い文章の例として、このセルにはとても長い文章を入れています。この文章は通常のセルの内容よりもはるかに長いため、テーブルの表示がどのように変わるかを確認するのに役立ちます。',
            '',  # 2行目は空白
            '',  # 3行目は空白
            ''   # 4行目は空白
        ]
    }

    # プレービュー用にPandasデータフレームに変換
    df = pd.DataFrame(data)




    st.divider()
    st.header('Excel出力')
    with st.expander("Excel出力", expanded=True):

        # サンプルのDataFrameを作成
        df = pd.DataFrame({
            'Column1': [1, 2, 3, 4],
            'Column2': ['A', 'B', 'C', 'D']
        })
        edited_df = st.data_editor(df, num_rows="dynamic")

        # Excel形式でダウンロードするボタン
        def download_excel(data):
            output = BytesIO()
            with pd.ExcelWriter(output, engine='openpyxl') as writer:
                data.to_excel(writer, sheet_name='Sheet1', index=False)
            excel_data = output.getvalue()
            return excel_data

        st.download_button(
            label='ここをクリックしてExcelファイルをダウンロード',
            data= download_excel(edited_df),
            file_name='data.xlsx',
            mime='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
        )

            



if __name__ == '__main__':
    main()



0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?