基礎から学ぶPython入門 90日コース | 業務自動化 - Day 31:Excel操作入門

Python 90日で身につけるPython
スポンサーリンク
スポンサーリンク

Day 31:Excel操作入門で「業務自動化の入口」に立つ

Day 31では、いよいよ Excel操作による業務自動化 に入っていきます。 キーワードは次の4つです。

  • openpyxl
  • Workbook
  • Worksheet
  • Cell

Excelは多くの現場で使われているため、PythonでExcelを扱えるようになると、 「手作業でやっていたことを自動化する」チャンスが一気に広がります。

ここでは、初心者向けにかみ砕いて、 「Excelファイルを作る → シートを扱う → セルを読む・書く」 という流れをステップバイステップで説明していきます。

Excel操作の基本:openpyxlとは何か

openpyxlは「Excelを触るための道具」

PythonでExcel(.xlsx)を扱うときによく使われるライブラリが openpyxl です。 これを使うと、次のようなことができます。

  • 新しいExcelファイルを作成する
  • 既存のExcelファイルを読み込む
  • シート(Worksheet)を追加・削除する
  • セル(Cell)に値を書き込む・読み取る
  • 罫線や色などの簡単な装飾を行う

まずは「インストール」と「最初の一歩」から始めます。

openpyxlのインストール

ターミナル(またはコマンドプロンプト)で次のコマンドを実行します。

bash

pip install openpyxl

これで、Pythonから import openpyxl ができるようになります。

Workbook:Excelファイルそのものを表す

Workbookのイメージ

Workbook は、Excelファイル全体を表すオブジェクトです。 Excelを開いたときに見える「ブック」がそのまま Workbook だと考えてください。

新しいExcelファイルを作るときは、Workbook を作成します。

新しいWorkbookを作成して保存する

from openpyxl import Workbook

def create_empty_workbook():
    """空のExcelファイルを作成して保存する例です。"""
    wb = Workbook()  # 新しいWorkbook(ブック)を作成します。

    # デフォルトで1つのシートが作られています(通常は 'Sheet' という名前)。
    # ここでは特に変更せず、そのまま保存します。

    wb.save("example.xlsx")  # Excelファイルとして保存します。
    print("example.xlsx を作成しました。")


if __name__ == "__main__":
    create_empty_workbook()
Python

ここでのポイントは、

  • Workbook() で「新しいExcelファイル」を作っていること
  • wb.save("ファイル名") で実際の .xlsx ファイルとして保存していること

です。

Worksheet:シートを扱う

Worksheetのイメージ

Worksheet は、Excelのシート(タブ)を表すオブジェクトです。 1つの Workbook の中に、複数の Worksheet を持つことができます。

アクティブなシートを取得する

Workbook を作成すると、最初から1つのシートが存在します。 それを「アクティブなシート」として取得できます。

from openpyxl import Workbook

def use_active_sheet():
    """アクティブなシートを取得して使う例です。"""
    wb = Workbook()
    ws = wb.active  # 現在アクティブなシートを取得します。

    print("シート名:", ws.title)  # デフォルトでは 'Sheet' という名前です。

    wb.save("active_sheet_example.xlsx")
    print("active_sheet_example.xlsx を作成しました。")


if __name__ == "__main__":
    use_active_sheet()
Python

シートを追加する・名前を付ける

複数のシートを持つExcelファイルを作ることもできます。

from openpyxl import Workbook

def create_multiple_sheets():
    """複数のシートを作成する例です。"""
    wb = Workbook()

    # 既存のアクティブシートに名前を付けます。
    ws1 = wb.active
    ws1.title = "Summary"  # サマリー用シート

    # 新しいシートを追加します。
    ws2 = wb.create_sheet(title="Data")      # データ用シート
    ws3 = wb.create_sheet(title="Report")    # レポート用シート

    wb.save("multi_sheet_example.xlsx")
    print("multi_sheet_example.xlsx を作成しました。")


if __name__ == "__main__":
    create_multiple_sheets()
Python

ここでのポイントは、

  • wb.active で「最初のシート」を取得していること
  • ws.title でシート名を変更できること
  • wb.create_sheet(title="...") で新しいシートを追加できること

です。

Cell:セルに値を書き込む・読み取る

Cellのイメージ

Cell は、Excelの1マスを表すオブジェクトです。 たとえば「A1」「B2」といった位置に対応します。

Worksheet を通して、セルにアクセスします。

セルに値を書き込む基本

from openpyxl import Workbook

def write_cells():
    """セルに値を書き込む基本例です。"""
    wb = Workbook()
    ws = wb.active
    ws.title = "Sample"

    # A1セルに文字列を書き込みます。
    ws["A1"] = "名前"

    # B1セルに文字列を書き込みます。
    ws["B1"] = "年齢"

    # A2セル・B2セルにデータを書き込みます。
    ws["A2"] = "Alice"
    ws["B2"] = 30  # 数値もそのまま書き込めます。

    wb.save("write_cells_example.xlsx")
    print("write_cells_example.xlsx を作成しました。")


if __name__ == "__main__":
    write_cells()
Python

ここでのポイントは、

  • ws["A1"] = ... のように、セル番地でアクセスできること
  • 文字列・数値などをそのまま代入すれば、セルに書き込まれること

です。

cell() メソッドで行・列を指定する

セル番地ではなく、「行番号・列番号」で指定する方法もあります。

from openpyxl import Workbook

def write_cells_with_coordinates():
    """行番号・列番号でセルに書き込む例です。"""
    wb = Workbook()
    ws = wb.active
    ws.title = "Sample"

    # 1行1列(A1)に書き込みます。
    ws.cell(row=1, column=1, value="商品名")

    # 1行2列(B1)に書き込みます。
    ws.cell(row=1, column=2, value="価格")

    # 2行目にデータを書き込みます。
    ws.cell(row=2, column=1, value="りんご")
    ws.cell(row=2, column=2, value=120)

    wb.save("write_cells_coordinates_example.xlsx")
    print("write_cells_coordinates_example.xlsx を作成しました。")


if __name__ == "__main__":
    write_cells_with_coordinates()
Python

ここでのポイントは、

  • ws.cell(row=行番号, column=列番号, value=値) という形式でセルにアクセスできること
  • 行・列をループで回すときに便利な書き方であること

です。

既存のExcelファイルを読み込んでセルを読む

Workbookを読み込む

新規作成だけでなく、既存のExcelファイルを読み込んで操作することもできます。

from openpyxl import load_workbook

def read_existing_workbook():
    """既存のExcelファイルを読み込んでセルを読む例です。"""
    wb = load_workbook("write_cells_example.xlsx")  # 先ほど作ったファイルを読み込みます。
    ws = wb["Sample"]  # シート名で取得します。

    # A1セルとB1セルを読み取ります。
    header1 = ws["A1"].value
    header2 = ws["B1"].value

    print("ヘッダー:", header1, header2)

    # A2セルとB2セルを読み取ります。
    name = ws["A2"].value
    age = ws["B2"].value

    print("データ:", name, age)


if __name__ == "__main__":
    read_existing_workbook()
Python

ここでのポイントは、

  • load_workbook("ファイル名") で既存のExcelファイルを読み込んでいること
  • wb["シート名"] で特定のシートを取得していること
  • ws["A1"].value のように .value でセルの値を取り出していること

です。

行・列をループで処理する:業務自動化の入口

行を順番に読み取る

Excelの業務自動化では、「表形式のデータをまとめて処理する」ことが多いです。 そのため、行・列をループで回す方法を押さえておくと便利です。

from openpyxl import load_workbook

def iterate_rows():
    """行を順番に読み取る例です。"""
    wb = load_workbook("write_cells_coordinates_example.xlsx")
    ws = wb["Sample"]

    # 1行目はヘッダーなので、2行目以降を読み取るイメージです。
    for row in ws.iter_rows(min_row=2, values_only=True):
        # row はタプル(例: ("りんご", 120))として渡されます。
        product_name, price = row
        print(f"商品: {product_name}, 価格: {price}")


if __name__ == "__main__":
    iterate_rows()
Python

ここでのポイントは、

  • ws.iter_rows(min_row=2, values_only=True) で「2行目以降の行」をまとめて取得していること
  • values_only=True にすると、Cell オブジェクトではなく「値だけ」が渡されること
  • 行ごとに処理することで、「一覧データをまとめて処理する」形に近づいていること

です。

Day 31ミニテンプレート:Excel操作入門スクリプト

最後に、Day 31で学んだ内容をまとめて試せる「Excel操作入門スクリプト」のテンプレートを示します。

# day31_excel_intro.py
# Excel操作入門の練習用スクリプト

from openpyxl import Workbook, load_workbook


def create_sample_workbook():
    """サンプルExcelファイルを作成する関数です。"""
    wb = Workbook()
    ws = wb.active
    ws.title = "Employees"

    # ヘッダー行
    ws["A1"] = "名前"
    ws["B1"] = "部署"
    ws["C1"] = "年齢"

    # データ行
    ws["A2"] = "Alice"
    ws["B2"] = "Sales"
    ws["C2"] = 30

    ws["A3"] = "Bob"
    ws["B3"] = "Engineering"
    ws["C3"] = 28

    wb.save("employees.xlsx")
    print("employees.xlsx を作成しました。")


def read_sample_workbook():
    """サンプルExcelファイルを読み込んで内容を表示する関数です。"""
    wb = load_workbook("employees.xlsx")
    ws = wb["Employees"]

    print("=== 従業員一覧 ===")
    for row in ws.iter_rows(min_row=2, values_only=True):
        name, department, age = row
        print(f"名前: {name}, 部署: {department}, 年齢: {age}")


def main():
    create_sample_workbook()
    read_sample_workbook()


if __name__ == "__main__":
    main()
Python

このスクリプトを実行すると、

  1. employees.xlsx が作成され
  2. その内容を読み込んで、ターミナルに一覧表示する

という一連の流れを体験できます。

Day 31のまとめ

Day 31では、Excel操作入門として、

  • openpyxl を使ってExcelファイル(Workbook)を作成・読み込みする方法
  • シート(Worksheet)を取得・追加し、名前を付ける基本
  • セル(Cell)に値を書き込む・読み取る方法
  • 行をループで処理して、「表形式データをまとめて扱う」入口となる書き方

をステップバイステップで学んでいただきました。

ここまで来ると、「Excelを手でいじる」だけでなく、 「PythonでExcelを操作して業務を自動化する」 という発想に一歩近づいています。 次のDayでは、このExcel操作をさらに発展させて、 実際の業務で使えるレベルの自動化に踏み込んでいきます。

タイトルとURLをコピーしました