PythonでExcel操作を自動化!openpyxlとpandasを使った業務効率化ガイド

Pythonのopenpyxlとpandasを使ったExcel操作の自動化方法を解説。読み込み、書き込み、データ分析、業務効率化の具体例を紹介。

PythonExcelopenpyxlpandas自動化業務効率化2026/5/25

はじめに

Excelはビジネスシーンで広く使われていますが、手作業でのデータ入力や集計は時間がかかり、ミスも発生しやすいです。Pythonを使えば、Excel操作を自動化し、業務効率を大幅に向上させることができます。本記事では、openpyxlpandasという2つのライブラリを使ったExcel操作の基本から応用までを解説します。

PythonでExcelを操作するメリット

  • 繰り返し作業の自動化: 毎月の売上集計、データ整形などをスクリプト化。
  • 大量データの高速処理: 数千行のデータでも瞬時に処理。
  • 再現性と正確性: 手作業によるミスを防止。
  • 他のシステムとの連携: データベースやWeb APIと組み合わせて強力な自動化が可能。
  • 必要なライブラリのインストール

    まず、openpyxlとpandasをインストールします。

    pip install openpyxl pandas
    

    openpyxlでExcelファイルを操作する

    Excelファイルの読み込み

    import openpyxl
    

    <h1>ワークブックを開く</h1> wb = openpyxl.load_workbook('sample.xlsx')

    <h1>アクティブなシートを取得</h1> ws = wb.active

    <h1>シート名を指定して取得</h1> ws = wb['Sheet1']

    <h1>セルの値を取得</h1> print(ws['A1'].value) print(ws.cell(row=1, column=1).value)

    データの書き込み

    ws['A1'] = 'Hello'
    ws.cell(row=2, column=1, value='World')
    

    <h1>保存</h1> wb.save('sample.xlsx')

    行・列の操作

    <h1>行を追加</h1>
    ws.append([1, 2, 3])
    

    <h1>列を挿入</h1> ws.insert_cols(2)

    <h1>行を削除</h1> ws.delete_rows(2)

    セルの書式設定

    from openpyxl.styles import Font, Alignment, PatternFill
    

    <h1>フォント設定</h1> ws['A1'].font = Font(bold=True, color='FF0000')

    <h1>背景色</h1> ws['A1'].fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')

    <h1>配置</h1> ws['A1'].alignment = Alignment(horizontal='center', vertical='center')

    グラフの作成

    from openpyxl.chart import BarChart, Reference
    

    chart = BarChart() data = Reference(ws, min_col=1, min_row=1, max_col=3, max_row=5) chart.add_data(data, titles_from_data=True) ws.add_chart(chart, 'E1')

    pandasでExcelデータを分析する

    Excelファイルの読み込み

    import pandas as pd
    

    <h1>全シートを読み込み</h1> df = pd.read_excel('sample.xlsx', sheet_name=None)

    <h1>特定のシートを読み込み</h1> df = pd.read_excel('sample.xlsx', sheet_name='Sheet1')

    データの整形と集計

    <h1>列の選択</h1>
    df = df[['列名1', '列名2']]
    

    <h1>条件フィルタ</h1> df_filtered = df[df['列名'] > 100]

    <h1>グループ化と集計</h1> df_grouped = df.groupby('カテゴリ').sum()

    <h1>ピボットテーブル</h1> pivot = pd.pivot_table(df, values='売上', index='月', columns='商品', aggfunc='sum')

    データの書き出し

    <h1>新しいExcelファイルに書き出し</h1>
    df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)
    

    実践的な自動化例

    例1: 複数Excelファイルの結合

    import glob
    

    all_files = glob.glob('data/*.xlsx') df_list = []

    for file in all_files: df = pd.read_excel(file) df_list.append(df)

    combined_df = pd.concat(df_list, ignore_index=True) combined_df.to_excel('combined.xlsx', index=False)

    例2: 売上レポートの自動作成

    <h1>売上データを読み込み</h1>
    df = pd.read_excel('sales.xlsx')
    

    <h1>月別・商品別の売上集計</h1> monthly_sales = df.groupby(['月', '商品'])['売上'].sum().reset_index()

    <h1>ピボットテーブルで見やすく</h1> pivot = monthly_sales.pivot(index='月', columns='商品', values='売上') pivot.to_excel('report.xlsx')

    例3: 条件に応じたセル色付け

    import openpyxl
    from openpyxl.styles import PatternFill
    

    wb = openpyxl.load_workbook('data.xlsx') ws = wb.active

    red_fill = PatternFill(start_color='FF0000', end_color='FF0000', fill_type='solid')

    for row in ws.iter_rows(min_row=2, max_col=ws.max_column): if row[0].value < 50: # 例えばA列の値が50未満なら赤色 for cell in row: cell.fill = red_fill

    wb.save('colored.xlsx')

    注意点とベストプラクティス

  • ファイルパスは絶対パスか相対パスを適切に指定する。
  • 大量データを扱う場合はpandasのchunksizeオプションを検討する。
  • 既存の書式を保持したい場合はopenpyxlのdata_only=Falseに注意。
  • エラーハンドリングを忘れずに行う(try-except)。
  • 定期的なバックアップを取る。
  • まとめ

    Pythonのopenpyxlとpandasを使えば、Excel操作の自動化が簡単に実現できます。最初は小さなタスクから始め、徐々に複雑な処理に挑戦してみてください。これにより、業務効率が大幅に向上し、よりクリエイティブな仕事に時間を割けるようになります。

    ぜひ、日々の業務にPythonを取り入れてみてください。