【Python×Excel】Excelのデータを読み込み、シートに出力してみた
はじめに
Excelの指定したシートのデータを変数(配列)に読込み、シートに値を出力するプログラムを作成しました。
Pythonプログラムmain2.pyとExcelファイルtest.xlsxを同一フォルダに格納し、プログラムを実行します。
test.xlsxのSheet1の1行目から10行目には、あらかじめ適当な数値を入力しておいてください。
def clicked1():
main2.pyのdef 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.pyとtest.xlsxを同一フォルダに格納し、main2.pyを実行すると、操作画面が表示され、OKボタンをクリックすると、Sheet1の1行目から10行目までのデータが読み込まれ、Sheet1のセル(15, 3)に、セル(6, 4)の値が出力されます。
ただし、プログラムの実行は必ずExcelファイルを閉じてから行ってください。また、不明なエラーが出た場合は、ChatGPTに聞いてみてください。よろしくお願いいたします。
この記事が気に入ったらサポートをしてみませんか?