· 

Excelファイルを検索

保存してあるExcelファイルをExcelを使わないでコード検索するプログラムを作ってみました。

他のソフトにコードで検索した例えば名前などをコピペする場合などを想定したものです。

 

テスト用のExcelファイルはここからダウンロードしてPython プログラムの保存場所と同じフォルダーに保存してください。

 

Python プログラムは下記のテキストをコピーしてテキストエディターに張り付け、ファイル名を例えば search.py(任意です)として保存します。拡張子をpywにするとコマンドプロンプト(黒い画面)が出ません。

 

テキストエディターに張り付けたときにインデントに注意してください。ずれるとエラーになります。

 

Python プログラムには事前にライブラリー pandas と pyperclip のインストールが必要です。

それぞれコマンドプロンプトで pip install pandas pip install pyperclip とコマンドを打ち込んでインストールしてください。

 

追記 ライブラリーのインストールの追加(pip install openpyxl)が必要でした。

実行してエラーになる場合メッセージを確認して追加が必要な場合インストールしてください。 

 

pythonでVlookup

# search.py

 

# Excelファイルとして保存されている表からキーに対応するデーターを検索する。

 

import tkinter                    # windowsGUIモジュール

# from tkinter import filedialog  # Tkinterのfiledialogオブジェクト フォルダー・ファイルの閲覧 今回これは不要

 

import pandas as pd               # Excelファイルを読み込むモジュール  インストールが必要 pip install pandas

import pyperclip                  # クリップボ-ドへのコピーモジュール インストールが必要 pip install pyperclip

import os                         # 実行ファイルの保存フォルダーパス取得

 

 

# 実行ボタンをクリックしたら開始

def start(): # 実行関数

   

   # 入力値取得

   key = float(textkey.get())     # 入力した検索キーを取得(数値)この場合検索キーは数値

   id = int(key)                  # 取得した検索キーを整数に変換して変数idへ格納

 

   # Excelファイルの取り込み

    

   file_path = os.path.dirname(os.path.abspath(__file__)) # python 実行ファイルのパス取得 Excelファイルは必ず同じフォルダーに保存する。

 

   file = file_path + '/社員名簿.xlsx' # ファイル名固定

   

   df = pd.read_excel(file,sheet_name='名簿') # シート名固定 変数dfにシート全体を読み込む

   

   # df = pd.read_excel('保存フォルダーパス+ファイル名(/社員名簿.xlsx'),シート名(sheet_name='名簿'))

  

    

   result = df.query('社員番号 == @id')            # 検索キー[社員番号]のid(変数)を検索

  

   kekka=(result.iat[0, 1])                        # 単独要素の値を取得行列(0から), 検索値が複数ある場合何行目の何列

  

# ----------------------------------------結果を表示

 

   labelpw = tkinter.Label(root, text=u'結果:',anchor='w',width=15) # anchor='w' 文字配置西

   labelpw.place(x=10, y=200)

 

   

   textkekka = tkinter.Entry(root,width=20)

   textkekka.insert(tkinter.END, kekka)   # 検索値を表示

   textkekka.place(x=60, y=200)

 

# ----------------------------------------結果を表示ここまで  

 

   pyperclip.copy(kekka)                  # 検索結果をクリップボードにコピー

 

 

# 閉じるボタンをクリックしたら終了

def close_window():

    root.destroy()

 

# マウスをクリックしたときの処理

def del_key(event):                          # クリックイベント関数

    textkey.delete(0,tkinter.END)            # 検索キーテキストボックス 入力値をデリート

   

    textkekka = tkinter.Entry(root,width=20) # 検索値を表示する場所

    textkekka.insert(tkinter.END, "")        # 検索値をクリア

    textkekka.place(x=60, y=200)

 

# ---- ここからメイン ----

 

# ウインドウの作成

root = tkinter.Tk()

root.title("社員名検索")

root.geometry("350x240")

 

# -------------------------------------------------社員番号記入欄ここから

 

labelnote = tkinter.Label(root, text=u'社員番号を入力して実行ボタンをクリックしてください。\n結果はクリップボードにコピーされています。',anchor='e',justify='left',width=40) # anchor='e',justify='left' 文字配置東左寄せ \n 改行

labelnote['fg'] = "Red"      # 赤で表示

labelnote.place(x=60, y=5)

 

labelkey = tkinter.Label(root, text=u'社員番号:',anchor='w',width=15) # anchor='w' 文字配置西

labelkey.place(x=10, y=40)

 

textkey = tkinter.Entry(root,width=5)

textkey.insert(tkinter.END, '3')  # デフォルト検索キー3

textkey.place(x=60, y=40)

textkey.bind('<Button>', del_key) # クリックイベント

 

# ------------------------------------------------社員番号記入欄ここまで

 

#ボタンの作成

button = tkinter.Button(text = "実行",command =  start)         # 実行ボタン

button.place(x=10, y=70)

 

button = tkinter.Button(text = "終了", command = close_window)  # 終了ボタン

button.place(x=60, y=70)

 

#ウインドウの描画

root.mainloop()