今回の記事では、PythonからExcelのファイルを開いて内容を取得する手順について、実際にPythonのコードを示して簡単に紹介したいと思います。
ただ単にExcelファイルを開いて中身を読むだけではつまらないので、特定のフォルダ内に複数のExcelファイルを配置しておき、PythonのTkinterを使ったGUI画面の入力ボックスに入力したキーワードで複数のExcelファイルの中から一致する行を探し出す、ということをやってみます。
なお、今回の記事で使用した環境はWindows 11です。
PythonからExcelファイルを読むことができる
PythonからExcelファイルを扱うことは可能です。様々なライブラリが存在しますので要件に応じて選択すればよいかと思います。
PythonからExcelファイルを扱うには「OpenPyXL」が情報量が多く手軽に導入できる
PythonからExcelファイルを扱うにあたって情報量も多く導入が楽でオススメなのは「OpenPyXL」です。すでにPython環境が構築済みであれば、pipコマンド一発でインストール可能です。
OpenPyXLのインストール
pipでサクッとインストールしてしまいましょう。
>pip install openpyxl
Windows環境で上記コマンドがエラーになってしまいインストールができない場合は、python.exeの引数として以下のようにコマンドプロンプトから実行してやります。
>python -m pip install openpyxl
Excelファイルの準備
Excelファイルを「C:\tmp」フォルダに2つほど配置しました。ファイル名は以下のようにしました。
- test_1.xlsx
- test_2.xlsx
Excelファイルの中身は、以下の画像で示すようにシンプルなものです。
Pythonのコード
以下は実際に使用したPythonのコードです。
import tkinter as tk
from tkinter import Tk, Button
import glob
from openpyxl import load_workbook
class Application(tk.Frame):
def __init__(self,master):
super().__init__(master)
self.pack()
self.master.geometry("500x200")
self.master.title("Excelシートを検索するアプリケーション")
self.create_widgets()
# ウィジェットの初期配置
def create_widgets(self):
# ラベル
lbl_keyword = tk.Label(self, text='商品ID')
lbl_keyword.grid(row=0, column=0)
# Entry
self.entry_keyword = tk.Entry(self)
self.entry_keyword.grid(row=0, column=1)
# 検索ボタン
btn = Button(self, text="検索", command=self.btn_click)
btn.grid(row=0, column=2)
# 検索を実行する関数
def btn_click(self):
dir = "C:\\tmp\\" # excelファイルを配置するフォルダパス
keyword = self.entry_keyword.get() # Entryに入力された値を取得
files = glob.glob(dir + "*.xlsx") # 拡張子(.xlsx)のみを取得対象にする
files = sorted(files) #ファイル名でソート
for file in files: # フォルダ内のexcelファイルの数だけループ
wb = load_workbook(file) # excelファイルを開く
ws = wb["Sheet1"] # シートを読み込む
# とりあえず全行・全列を読み込む
for rows in ws.iter_rows(ws.min_row, ws.max_row, ws.min_column, ws.max_column):
for cell in rows:
if str(cell.value) in keyword:
print("見つかりました")
print(f"ファイル名:{file}")
print("行:" + str(cell.row)) # >>> 行
print("列:" + str(cell.column)) # >>> 列
print("セル番地:" + str(cell.coordinate)) # >>> セル番地
product_name = ws.cell(row=cell.row, column=2).value #セルから商品名を取得
print(f"商品名は「{product_name}」です")
break
else:
continue
break
else:
continue
break
def main():
root = tk.Tk()
app = Application(master=root)
app.mainloop()
if __name__ == "__main__":
main()
PythonからExcelファイルの中身を検索するプログラムの実行
上記Pythonのコードを実行すると以下のウィンドウが表示されますので「商品ID」欄に、保存済みのExcelシートに存在する値を入力してから「検索」ボタンをクリックします。
Pythonのコンソールに以下のように表示されればOKです。ちゃんと検索条件でヒットした結果が取得できていますね。
おわりに
今回の記事ではPythonからExcelファイルを検索して内容を取得するPythonコードを紹介しました。最後までお読みいただきありがとうございます。
コメント