【Python】フォームの入力内容をExcelに 自動追加

    簡単な入力フォームを表示させて、入力したデータをExcelファイルに自動追加するプログラムを作ってみましょう。

    下のYouTubeの埋め込みで、プログラムの動きやコーディングをわかりやすく解説しています。せひご参照ください。

    フォームの入力内容をExcelに 自動追加

    サンプルファイルは下のボタンからダウンロードできます。

    目次

    プログラムの動作の確認

    form_copy.pyというファイルと商品リストというエクセルファイルがあります。

    form_copy.pyを実行すると、入力フォームが現れます。そこにデータを入力します。

    プログラム終了をクリックすると、自動でエクセルファイルにデータが入力されています。

    コードの解説

    import pandas as pd
    import tkinter as tk
    import sys
    
    item_list=[]
    
    
    def insertData():
    item_list.append([id_text.get("1.0","end"),name_text.get("1.0","end"),price_text.get("1.0","end")])
    #テキストボックスの値を削除する
    id_text.delete("1.0","end")
    name_text.delete("1.0","end")
    price_text.delete("1.0","end")
    
    
    def endProgram():
    df=pd.read_excel("商品リスト.xlsx")
    #Excelファイルに追加できるように変換
    insert_data=pd.DataFrame(item_list,columns=df.columns)
    df=pd.concat([df,insert_data])
    #Excelファイルに書き出し
    with pd.ExcelWriter("商品リスト.xlsx") as writer:
    df.to_excel(writer,index=False)
    #プログラム終了
    sys.exit()
    
    root=tk.Tk()
    root.title("商品データ登録")
    #サイズの設定
    root.geometry("750x150")
    #GUI部品の配置を設定
    root.grid()
    #ラベル
    id_label=tk.Label(root,text="商品番号")
    name_label=tk.Label(root,text="商品名")
    price_label=tk.Label(root,text="単価")
    #テキストボックス
    id_text=tk.Text(root,borderwidth=1,height=1,relief="ridge")
    name_text=tk.Text(root,borderwidth=1,height=1,relief="ridge")
    price_text=tk.Text(root,borderwidth=1,height=1,relief="ridge")
    #ボタン
    insert_button=tk.Button(root,text="データ追加",command=insertData)
    append_button=tk.Button(root,text="プログラム終了",command=endProgram)
    #部品を配置
    id_label.grid(row=1, column=1)
    id_text.grid(row=1, column=2)
    name_label.grid(row=2, column=1)
    name_text.grid(row=2, column=2)
    price_label.grid(row=3, column=1)
    price_text.grid(row=3, column=2)
    insert_button.grid(row=4, column=1)
    append_button.grid(row=4, column=2)
    #ウインドウを表示
    root.mainloop()

    最初にフォームを作成します。 Tk関数でウィンドウを作成して変数 rootに入れ、タイトルやサイズなどを設定していきます。Tkinter を利用すると、 ウィンドウにテキストボックスやボタン、リストボックスなどを配置し、ユーザーの操作に応じて関数などを実行することができます。
    Tkinter は Python の標準ライブラリに付属しているので、 追加インストールは不要です。 import文で取り込むだけで利用できます。

    最後のgridメソッドは部品の配置方法を設定するためのものです。 このメソッドを呼び出すと、行(row) と列 (column) を指定しながら各部品を配置できるようになります。

    画面上に配置する部品を作成していきます。 作成した部品は変数に入れます。種類を区別しやすいよう、それぞれ「_label」 「_text」 「_button」という名前の変数に入れていきます。

    次にテキストボックスを作成します。 引数のborderwidth は枠の太さ、height は高さ(行数) relief は浮き彫り効果のことで、立体感のある装飾にします。
    ボタンは、引数 text にボタンに表示する文字列を指定し、引数commandにクリック時に呼び出す関数の名前を指定します。

    部品が用意できたら、それをウィンドウ上に配置していきます。 部品を入れた変数のgrid メソッドを呼び出し、 row (行) と column (列) を指定していきます。

    細かい調整はTkinterがやってくれるから、大まかな配置を指定すればOKです。 一番左上に配置したければ 「row=1,
    column=1」、 その隣に表示したければ 「row=1,column=2」という具合に指定していきましょう。
    配置が終わったらmainloopメソッドを呼び出します。 これはとても重要なメソッドで、最後にこれを書かないとウィンドウが表示されません。

    テキストボックスからテキストを取得するにはgetメソッドを利用します。
    2つの引数で取得範囲の先頭と末尾を表し、すべてのテキストを取得したい場合は 「”1.0″, “end”」と指定します。
    入力データをリストに追加したら、次のデータを入力しやすいよう、テキストボックス内のテキストをdeleteメソッドで削除します。 引数の指定方法はget メソッドと同じです。
    endProgram 関数は、[プログラム終了] ボタンがクリックされたときに呼び出されます。 pandas を利用して Excelファイルにデータを追記し、プログラムを終了します。

    よかったらシェアしてね!
    • URLをコピーしました!
    目次