PythonでExcelを操作する自動化ツール

PythonでExcelを操作する自動化ツール:OpenPyXLの活用法

お疲れ様です。安岡です。
Excelを使用したデータ管理や分析は、多くの業務で日常的に行われいますが、手作業確認することは非効率でミスが発生しやすい上に冪等性が担保できません。
実際に現場で使用したPythonのライブラリについて自分なりにまとめてみました。

機械的に調査するために
Pythonのライブラリ「OpenPyXL」を使って、
Excelの読みとりやデータの操作を簡単に自動化することができます。

この記事では、OpenPyXLを使ったExcelファイルの読み取りや調査の自動化について解説し、実践的なコード例を紹介します。


OpenPyXLとは?

OpenPyXLはPythonのライブラリで、Microsoft Excelファイル(.xlsxおよび.xlsm形式)を操作するために使用されます。このライブラリを利用すると、以下のようなことが可能です:

  • Excelファイルの読み込みと書き込み
  • セルのデータ取得と編集
  • グラフやフォーマットの操作
  • 複数シートの管理

事前準備

OpenPyXLを使用するために、まずはライブラリをインストールします。以下のコマンドをターミナルやコマンドプロンプトで実行してください:

pip install openpyxl

実際に使えるコード例

ここでは、以下のようなシナリオを想定してコードを紹介します:

  1. Excelファイルを読み込み、特定の列のデータを抽出する。
  2. データを集計して結果を新しいExcelファイルに保存する。

1. Excelファイルの読み込みとデータの抽出

まずは、Excelファイルから特定の列のデータを読み取るコードを示します。

サンプルコード:

from openpyxl import load_workbook

# Excelファイルを読み込む
file_path = "sample.xlsx"  # 読み込みたいExcelファイルのパス
workbook = load_workbook(filename=file_path)
sheet = workbook.active  # アクティブなシートを取得

# 特定の列(例:A列)のデータを取得
data_column = []
for row in sheet.iter_rows(min_col=1, max_col=1, values_only=True):  # A列を指定
    data_column.append(row[0])

print("A列のデータ:", data_column)

実行結果:

「sample.xlsx」に保存されているA列の値がリストとして取得されます。


2. データの集計と新しいファイルへの保存

次に、取得したデータを集計して結果を新しいExcelファイルに保存します。

サンプルコード:

from openpyxl import Workbook

# データの集計(例:重複カウント)
from collections import Counter
data_summary = Counter(data_column)

# 新しいExcelファイルを作成
new_workbook = Workbook()
new_sheet = new_workbook.active

# 集計結果をExcelに書き込む
new_sheet.append(["項目", "出現回数"])  # ヘッダー行を追加
for key, value in data_summary.items():
    new_sheet.append([key, value])

# ファイル保存
output_path = "summary.xlsx"
new_workbook.save(output_path)
print(f"集計結果を {output_path} に保存しました。")

実行結果:

新しいExcelファイル「summary.xlsx」に、元のデータの集計結果(項目とその出現回数)が保存されます。


応用例

OpenPyXLを活用すれば、さらに高度な操作も可能です:

  1. 条件付き書式の適用
  2. データのフィルタリングや並べ替え
  3. グラフの作成や編集

たとえば、特定の条件に基づいてセルの背景色を変更する場合:

条件付き書式の例:

from openpyxl.styles import PatternFill

# 条件に応じてセルの背景色を変更
for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row, min_col=1, max_col=1):
    for cell in row:
        if cell.value == "特定の値":
            cell.fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")  # 赤色

workbook.save("highlighted.xlsx")
print("条件付き書式を適用しました。")

まとめ

OpenPyXLを使えば、Excel操作を効率化し、手作業を自動化することが可能です。上記のコードを参考に、自分の業務やプロジェクトに応じたスクリプトを作成してみてください。

OpenPyXLの公式ドキュメントは、以下のリンクから閲覧できます。このドキュメントでは、基本的な使い方から高度な機能まで詳しく解説されています。

特に「Simple Usage」セクションでは、Excelシートの作成やデータ操作、グラフ生成の基本例が説明されています。さらに深く知りたい場合は、「Tutorial」や他のセクションを活用してください。

Last modified: 2024-12-01

Author