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.argv
やinput()
が適しています。 - 運用を意識する場合 は
argparse
でヘルプ付き CLI を構築するか、configparser
で外部設定ファイルに切り出すと保守性が高まります。 openpyxl
のread_only=True
オプションを併用するとメモリ負荷を抑えて高速に読み込みできます。
業務フローやチーム構成に合わせて、最適なパラメータ受け渡し方法を選択してください。