python

【Python】初心者必見!Pythonで学ぶExcel自動化の基本

Excelは、データ管理や分析において強力なツールですが、手動での操作が煩雑で時間を要することがあります。

特に、定型的なデータ入力や複雑な計算、レポート作成などの反復作業は、効率化の余地があります。

そこで今回は、Pythonを活用したExcel操作の自動化について見ていきたいと思います。
本記事では、Pythonを用いてExcelを操作するための基本的な手法を確認していきます。

PythonでExcelを操作するための準備

Pythonを使ってExcelを操作することで、業務の効率化自動化が可能になります。

ここでは、PythonでExcelを操作するための準備として、そのメリットと必要なライブラリのインストール方法について解説します。

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

Pythonを用いてExcelを操作する主なメリットは以下のとおりです。

  1. 自動化による業務効率化ができる
  2. 環境に依存せず動作可能
  3. 他のアプリケーションとの連携が容易である

自動化による業務効率化ができる

pythonを使うことで、Excelでの手作業を自動化できます。

例えば、毎日の売上データを収集し、レポートを作成する作業をPythonスクリプトに任せることで、手間と時間を大幅に削減できます。

これにより、作業時間の短縮だけでなく、人間によるケアレスミスも防ぐことができます。
さらに、PythonはExcel以外のアプリケーションとも連携できるため、データの収集から分析、報告までの一連のプロセスを一括して自動化することができます。

環境に依存しない

従来、Excelの自動化にはVBA(Visual Basic for Applications)が用いられてきましたが、VBAは主にWindows環境での使用を前提としており、Mac環境では動作しない場合があります。

一方、Pythonは、Windows、Mac、Linuxなど多様なOS上で動作します。

そのため、Pythonを用いたExcel操作は、特定のOSに依存せず、さまざまな環境で一貫して実行できます。

他のアプリケーションとの連携

Pythonは、Excelだけでなく、さまざまなアプリケーションやサービスと連携することが可能です。

pythonでは、スクレイピング、データベースとの連携、メールの自動送信、PDFの生成や編集など、多岐にわたる機能を実現できます。
これらの内容と、Excelでのデータ処理を統合することで、簡単にワークフローを構築することが可能です。

必要ライブラリのインストール

PythonでExcelを操作するためには、専用のライブラリとしてopenpyxlをインストールする必要があります。
その他に、データフレームの操作を行うため、pandasをインストールしておきます。

pip install openpyxl pandas

これで、PythonでExcelを操作するための準備が整いました。
次からは、実際にPythonコードを書いてExcelファイルを操作する方法について解説します。

PythonによるExcel操作の基本

Pythonを使用してExcelファイルを操作することで、データの自動処理や分析が容易になります。
ここでは、Excelファイルの基本的な読み込みと書き込み方法、そしてワークブックやワークシートの操作方法について、簡単に解説していきます。

新規Excelファイルの作成

環境設定ができましたので、早速openpyxlライブラリを使用してExcelファイルの作成、読み込み、編集、保存を実施していきます。

新規Excelファイルの作成

新しいExcelファイルを作成するには、まずopenpyxlのWorkbookクラスを使用してワークブック(Excelファイル)オブジェクトを作成します。
その後、必要に応じてワークシートを追加・編集し、最後にファイルとして保存します。

from openpyxl import Workbook

# 新しいワークブックを作成
wb = Workbook()

# デフォルトで作成されるワークシートを取得
ws = wb.active

# ワークシートにデータを書き込む
ws['A1'] = 'Hello Excel!'

# Excelファイルとして保存
wb.save(sample.xlsx')

上記のコードでは、”sample.xlsx”という名前のExcelファイルが作成されます。
そして、A1セルに「Hello Excel!」というテキストが入力されます。

既存Excelファイルの読み込み

既存のExcelファイルを読み込むには、openpyxlのload_workbook関数を使用します。
読み込んだワークブックから特定のワークシートを取得し、セルの値を読み取ることができます。

from openpyxl import load_workbook

# 既存のExcelファイルを読み込む
wb = load_workbook('sample.xlsx')

# 特定のワークシートを取得(名前で指定)
ws = wb['シート1']

# A1セルの値を取得
value = ws['A1'].value
print(f'A1セルの値: {value}')

このコードでは、”sample.xlsx”の「シート1」にあるA1セルの値を取得して表示します。
出力結果は以下の通りです。

出力:A1セルの値: Hello Excel!

Excelファイルの保存

ワークブックの内容を保存するには、saveメソッドを使用します。
新しいファイル名を指定することで、別名で保存(”名前を付けて保存”)することも可能です。

# 既存のワークブックを編集
ws['A2'] = 'new data'

# 上書き保存
wb.save('sample.xlsx')

# 別名で保存
wb.save('another_name_sample.xlsx')

上記のコードでは、A2セルに新しいデータを追加し、元のファイルに上書き保存しています。
また、別の名前”another_name_sample”で保存することで、元のファイルを残したまま新しいファイルを作成することもできます。

ワークブックとワークシートの操作

次は、Excelファイル内のワークブック(ファイル全体)やワークシート(シート)を操作する方法についてみていきます。

ワークシートの選択

ワークブック内の特定のワークシートを選択するには、ワークシート名を指定して取得します。
また、active属性を使用して現在アクティブなワークシートを取得することもできます。

# ワークシート名を指定して取得
ws1 = wb['シート1']

# アクティブなワークシートを取得
ws_active = wb.active

新規ワークシートの追加

ワークブックに新しいワークシートを追加するには、create_sheetメソッドを使用します。
引数でワークシート名や挿入位置を指定することができます。

# デフォルトの名前で末尾に追加
ws_new = wb.create_sheet()

# 名前を指定して末尾に追加
ws_named = wb.create_sheet(title='new_sheet)

# 名前と挿入位置を指定して追加(先頭に挿入)
ws_first = wb.create_sheet(title='first_sheet', index=0)

index引数で挿入位置を指定しない場合、新しいワークシートはワークブックの末尾に追加されます。

ワークシートの名前変更と削除

既存のワークシートの名前を変更するには、ワークシートオブジェクトのtitle属性を設定します。
ワークシートを削除するには、ワークブックのremoveメソッドを使用します。

# ワークシートの名前を変更
ws.title = 'rename_sheet_name'

# ワークシートを削除
wb.remove(ws)

セルの操作

Excelのセルについては、データの入力や取得、複数セルの一括操作など、さまざまな方法で操作できます。
順に確認していきます。

セルへのデータ書き込み

特定のセルにデータを書き込むには、セルのアドレスを指定して値を代入します。

from openpyxl import Workbook

# 新しいワークブックとワークシートを作成
wb = Workbook()
ws = wb.active

# セルにデータを書き込む
ws['A1'] = '名前'
ws['B1'] = '年齢'
ws['C1'] = '性別'
ws['A2'] = '山田太郎'
ws['B2'] = 25
ws['C2'] = '男'

# ファイルを保存
wb.save('sample.xlsx')

上記コードを実行すると、sample.xlsxというファイルが作成され以下のようにデータが入力されます。

セルからのデータ読み取り

セルの値を読み取るには、セルのアドレスを指定してvalue属性を参照します。

from openpyxl import load_workbook

# 既存のワークブックを読み込む
wb = load_workbook('sample.xlsx')
ws = wb.active

# セルの値を読み取る
name = ws['A2'].value
age = ws['B2'].value
gender = ws['C3'].value

print(f'名前: {name}, 年齢: {age}, 性別: {gender}')

出力結果は、以下の通りとなります。

出力:名前: 山田太郎, 年齢: 25, 性別: 男

複数セルの一括操作

複数のセルに対して一括でデータを書き込む場合は、以下の通りです。

from openpyxl import Workbook

# 新しいワークブックとワークシートを作成
wb = Workbook()
ws = wb.active

# 複数のデータをリストで用意
data = [
    ['名前', '年齢', '性別'],
    ['山田太郎', 30, '男'],
    ['山田花子', 25, '女'],
    ['山田次郎', 22, '男'],
    ['山田三郎', 28, '男']
]

# データを書き込む
for row in data:
    ws.append(row)

# ファイルを保存
wb.save('sample.xlsx')

上記コードを実行すると、sample.xlsxというファイルが作成され以下のようにデータが入力されます。

データの操作

次に、Excel内のデータを追加・更新・削除する方法について説明します。

データの追加と更新

既存のセルの値を更新したり、新しいデータを追加するには、対象のセルに新しい値を代入します。

ws['D1'] = '血液型'
ws['D2'] = 'A'
ws['D3'] = 'B'
ws['D4'] = 'AB'
ws['D5'] = 'A'

# A2セルの名前を更新
ws['A2'] = '山田一郎'

# ファイルを保存
wb.save('sample.xlsx')

上記コードを実行すると、sample.xlsxというファイルが作成され以下のようにデータが入力されます。

データの削除

特定のセルのデータを削除するには、セルの値をNoneに設定します。

# B2セルのデータを削除
ws['B2'] = None

# ファイルを保存
wb.save('sample.xlsx')

上記を実行することで「山田一郎」の年齢が空欄になります。

セルの書式設定

セルのフォントや色など、書式設定を行う方法を解説していきます。

フォントの設定

セルのフォントスタイルを設定するには、Fontクラスを使用します。
これにより、フォントの種類、サイズ、色、太字、斜体、下線などを指定できます。

from openpyxl import Workbook
from openpyxl.styles import Font

# 新しいワークブックとワークシートを作成
wb = Workbook()
ws = wb.active

# セルにデータを入力
ws['A1'] = 'Sample Text'

# フォントの設定
font_style = Font(name='Arial', size=14, bold=True, italic=True, color='FF0000')

# フォントをセルに適用
ws['A1'].font = font_style

# ファイルを保存
wb.save('styled.xlsx')

上記コードでは、フォントの種類=Arial、文字サイズ=14、イタリック文字、カラー=FF0000にして表示しています。

セルの色とパターン

セルの背景色やパターンを設定するには、PatternFillクラスを使用します。
これにより、セルの塗りつぶし色やパターンを指定できます。

from openpyxl.styles import PatternFill

# セルにデータを入力
ws['A2'] = 'Sample Color'

# 塗りつぶしの設定
fill_style = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')

# 塗りつぶしをセルに適用
ws['A2'].fill = fill_style

# ファイルを保存
wb.save('styled.xlsx')

このコードでは、A2セルに「Sample Color」というテキストを入力し、セルの背景色を黄色(’FFFF00’)に設定しています。
PatternFillクラスのstart_colorとend_colorで色を指定し、fill_typeで塗りつぶしのタイプを’solid’(単色)に設定しています。

まとめ

本記事では、Pythonを用いたExcel操作の基本について解説しました。

Pythonの活用により、Excelでのデータ入力や集計、書式設定など、多くの作業を自動化し、業務効率を大幅に向上させることが可能です。
特に、繰り返しの多いタスクや大量のデータ処理において、その効果大きいです。

これまで、Excelの業務効率化というとVBAでしたが、今後はVBAではなくpythonを積極的に活用していきたいです。