見出し画像

【Python×Excel】Excelのデータを読み込み、シートに出力してみた

はじめに

 Excelの指定したシートのデータを変数(配列)に読込み、シートに値を出力するプログラムを作成しました。

 Pythonプログラムmain2.pyとExcelファイルtest.xlsxを同一フォルダに格納し、プログラムを実行します。

test.xlsxSheet1の1行目から10行目には、あらかじめ適当な数値を入力しておいてください。

def clicked1():

main2.pydef clicked1()には、操作画面のOKボタンをクリックしたら実行する処理を記載しています。

 ここでは、PythonでExcelデータを取り扱うため、main2.pyの冒頭で、openpyxlをインポートしています。

 はじめに、Excelのワークブックtest.xlsxとワークシートSheet1を開くための設定を行っています。

 つぎに、for文で、1行目から10行目まで繰り返し計算し、配列a[ ] にデータを読み込ませます。append()メソッドで、配列a[ ] に、1列目から5列目までのデータを読み込んでいます。

 データ格納後、Sheet1の15行目、3列目のセル(15, 3)に配列a[5][3]の値を出力し、Excelファイルを保存し、ファイルを閉じています。

 ここで、a[5][3]には、Sheet1の6行目、4列目の値が格納されます。少しややこしいのですが、セル(1, 1)の値は、配列a[0][0]に、セル(10, 5)の値は、配列a[9][4]に格納されます。

オブジェクトの生成

 オブジェクトの生成では、600×300のサイズの操作画面にOKボタンを配置し、OKボタンをクリックすると、clicked1()が実行されるようにしています。また、OKボタンは、操作画面の左端からx方向に520、y方向に30の位置に配置されるようにしています。

 オブジェクトを生成するため、main2.pyの冒頭で、tkinterをインポートしています。

import openpyxl
import tkinter as tk # tkinterのインポート
a = []
fname='test.xlsx'

# clicked1()の実行
def clicked1():
    # Workbook、Worksheetを開く
    wb = openpyxl.load_workbook(fname)
    ws = wb['Sheet1']

    # 読込み
    n1 = 0
    for row in ws.iter_rows(min_row=1, max_col=5, max_row=10):
        a.append([cell.value for cell in row])
        n1 += 1
        print(n1, a)
    
    # 出力、保存
    ws.cell(15, 3, value=a[5][3])
    wb.save(fname)
    wb.close()


# オブジェクトの生成---------------------------------
root = tk.Tk()
root.title('サンプル') # 画面のタイトル
root.geometry('600x340') # 画面のサイズ 
root.resizable(False, False) # 画面サイズを変更しない
# button1の生成
button1 = tk.Button(
    root, # 画面上にbutton1を生成
    text = '  OK  ', # button1の名称
    command = clicked1 # クリック時にclicked1()を実行
)
# オブジェクトの設置
button1.place(x=520,y=30) # button1の設置 
root.mainloop()

main2.py

まとめ

main2.pytest.xlsxを同一フォルダに格納し、main2.pyを実行すると、操作画面が表示され、OKボタンをクリックすると、Sheet1の1行目から10行目までのデータが読み込まれ、Sheet1セル(15, 3)に、セル(6, 4)の値が出力されます。

 ただし、プログラムの実行は必ずExcelファイルを閉じてから行ってください。また、不明なエラーが出た場合は、ChatGPTに聞いてみてください。よろしくお願いいたします。

この記事が気に入ったらサポートをしてみませんか?