Python openpyxl で「変動しやすい値」をパラメータ化する 4 つの方法

Excel ワークブックからセル値を取得するスクリプトを汎用化するには、「ブック名」や「セル番地」を 固定値にせず外部パラメータ化 すると便利です。本記事では コマンドライン引数・input()argparse・INI 設定ファイル の 4 手法をご紹介いたします。シナリオに応じて最適な方法をお選びください。


目次

1. sys.argv でシンプルに受け取る

import sys
from openpyxl import load_workbook

xlsx_path = sys.argv[1]          # ブック名
target_cell = sys.argv[2]        # セル番地

wb = load_workbook(xlsx_path, read_only=True)
ws = wb.active
print(ws[target_cell].value)
特徴説明
最小構成依存ライブラリは openpyxl のみです。
幅広い環境で動作バッチ処理やシェルスクリプトと組み合わせやすい構成です。

2. input() で対話的に入力

from openpyxl import load_workbook

xlsx_path = input('ファイル名を入力してください: ')
target_cell = input('セル番地を入力してください(例: B3): ')

wb = load_workbook(xlsx_path, read_only=True)
ws = wb.active
print(ws[target_cell].value)
特徴説明
GUI 不要コマンドプロンプト/ターミナル上で完結します。
入力ミスの検知try...except と組み合わせるとエラー処理も容易です。

3. argparse でヘルプ付き CLI を構築

import argparse
from openpyxl import load_workbook

parser = argparse.ArgumentParser(
    description='Excel シートの特定セルを取得するツール')
parser.add_argument('xlsx_path', help='読み込む Excel ファイル名')
parser.add_argument('target_cell', help='セル番地(例: C7)')
cli_args = parser.parse_args()

wb = load_workbook(cli_args.xlsx_path, read_only=True)
ws = wb.active
print(ws[cli_args.target_cell].value)
特徴説明
自動ヘルプ生成-h / --help で使い方を確認できます。
オプション追加が容易--sheet などを追加して機能拡張しやすい構造です。

4. configparser で設定ファイルを外部管理

sample.ini

[DEFAULT]
xlsx_path = report.xlsx
target_cell = D5

Python スクリプト

import configparser
from openpyxl import load_workbook

cfg = configparser.ConfigParser()
cfg.read('sample.ini', encoding='utf-8')

xlsx_path = cfg['DEFAULT']['xlsx_path']
target_cell = cfg['DEFAULT']['target_cell']

wb = load_workbook(xlsx_path, read_only=True)
ws = wb.active
print(ws[target_cell].value)
特徴説明
コード変更不要設定値を INI ファイルだけで差し替え可能です。
複数環境で共用サーバー別・ローカル別の値をセクション単位で管理できます。

比較表

手法導入コスト拡張性主な用途
sys.argvバッチ処理、シェル呼び出し
input()テスト・学習用途
argparse社内 CLI ツール、複数オプション設定
configparser設定ファイル管理、複数環境切替

まとめ

  • 最小限で済ませたい場合sys.argvinput() が適しています。
  • 運用を意識する場合argparse でヘルプ付き CLI を構築するか、configparser で外部設定ファイルに切り出すと保守性が高まります。
  • openpyxlread_only=True オプションを併用するとメモリ負荷を抑えて高速に読み込みできます。

業務フローやチーム構成に合わせて、最適なパラメータ受け渡し方法を選択してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次