【Python】openpyxlの「offset」でエクセルのセルの周辺データを取得するプログラム

Pythonでエクセルの特定の文字列のセルの周辺データを取得するためのプログラムを作成しました。

例えば、以下のように、「東京」というセルデータの右側のセルのデータを一括で取得したいときなどに便利です。

  • [東京都] [品川区]
  • [東京都] [墨田区]
  • [東京都] [新宿区]

今回は「openpyxl」ライブラリで「offset」を利用し、対象文字列周辺のセルデータ取得プログラムを書きました。
エクセルデータの取得で参考にしてください。

「openpyxl」の「offset」を利用した指定文字列周辺データを取得するプログラム

今回は以下のエクセルのセルデータの文字列で「tmpfs」に該当する右隣のセルのデータを取得します。

※ excel-data.xlsx

「offset」コマンドを使用したセルの周辺データ取得プログラム

以下のプログラムは特定のセルデータの中から、「tmpfs」という文字列を検索し、その隣のセルデータを取得します。

※ offset-test01.py

import openpyxl as px

wb = px.load_workbook('excel-data.xlsx')

ws = wb["Sheet1"] 

B2_COL = 2
B8_ROW = 2

E2_COL = 6
E6_ROW = 6

# 範囲データを順次処理
for row in ws.iter_rows(min_col=B2_COL, min_row=B8_ROW, max_col=E2_COL, max_row=E6_ROW ):
    for cell in row:
        # 該当セルの値取得
        cell_value = cell.value
        o = cell.offset(0,1)
        offset = o.value
        # セル範囲内に該当の文字列が存在する場合表示
        if 'tmpfs' in cell_value:
            print(cell.coordinate, cell_value, offset)

# ロードしたExcelファイルを閉じる
wb.close()
  • 1行目:「openpyxl」をインポート
  • 3行目:対象のエクセルファイルを読み込み
  • 5行目:読み取ったエクセルから対象のシートをアクティブ
  • 7−11行目:データを取得する範囲のセルの情報を取得
  • 14行目:ws.iter_rowsで対象シートのセルの範囲を指定
  • 17行目:セルのデータを取得
  • 18−19行目:対象の文字列の右隣のデータを取得
  • 21−22行目:対象の文字列があった場合、右隣のデータを表示する

実行結果

以下でプログラムを実行することにより、対象の文字列とその右隣のセルのデータが出力されます。

offset-test $ python3 offset-test01.py 
B2 devtmpfs 908M
B3 tmpfs 920M
B4 tmpfs 920M
B5 tmpfs 920M

「offset」で周辺データは自由に取得可能

上記プログラムで、offsetの数値を変更することで自由にセルの周辺データを取得できます。

対象のセルの右隣のデータを取得

o = cell.offset(0,1)

対象セルの左隣のデータを取得

o = cell.offset(0,-1)

対象セルの一つ下のデータを取得

o = cell.offset(1,0)

対象セルの一つ上のデータを取得

o = cell.offset(-1,0)

openpyxlの「offset」を利用したプログラムは以上となります。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!