【Python】エクセルを自動化しよう!

Pythonでは、ライブラリを使用することでエクセルを操作することが出来ます。

本記事では、Pythonでエクセルの自動化をする方法について解説します

初心者の方でも理解しやすいよう、例コードを交えながら解説します

時短でプログラミングを身に付けたいという方は、【完全無料】0円で学べるプログラミングスクールを紹介【超厳選】20代におすすめのプログラミングスクール3選!を参考にしてください。

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

必要なライブラリをインストールしましょう。

以下のコマンドをPythonの環境で実行します。

pip install pandas openpyxl

これで、PythonでExcelファイルを操作する準備が整いました。

Excelファイルを読み込む

Pythonのpandasライブラリを使って、Excelファイルを読み込みます

import pandas as pd

# Excelファイルを読み込む
df = pd.read_excel('sample.xlsx')

# 最初の5行を表示する
print(df.head())

これでExcelファイルのデータがPythonのDataFrameに変換され、それに対して様々な操作が可能になります。

Excelファイルに書き込む

pandasを使って、DataFrameの内容をExcelファイルに書き込むことができます

# 新しいデータフレームを作成する
new_df = pd.DataFrame({
    'Name': ['John', 'Anna', 'Peter', 'Linda'],
    'Age': [23, 78, 22, 19],
    'City': ['New York', 'Paris', 'Berlin', 'London']
})

# DataFrameをExcelファイルに書き込む
new_df.to_excel('new_sample.xlsx', index=False)

セルの値を更新する

openpyxlを使って、特定のセルの値を更新することができます

from openpyxl import load_workbook

# Workbookを開く
wb = load_workbook('sample.xlsx')

# Worksheetを選択
ws = wb.active

# セルの値を更新
ws['A1'] = 'Updated Value'

# Workbookを保存
wb.save('updated_sample.xlsx')

フォーマット設定の変更

次に、openpyxlを使用してExcelのフォーマットを設定する方法について見ていきましょう

from openpyxl import Workbook
from openpyxl.styles import Font, Color

# Workbookを作成
wb = Workbook()

# Worksheetを選択
ws = wb.active

# セルに値を入力
ws['A1'] = 'Hello, Excel!'

# フォントを変更
ft = Font(color="FF0000", italic=True) # 赤色、斜体
ws['A1'].font = ft

# ワークブックを保存
wb.save('formatted_sample.xlsx')

シートの追加

Excelファイルでは、シート追加することが出来ます。

openpyxlを使うと、シートを簡単に追加することができます

from openpyxl import Workbook

# Workbookを作成
wb = Workbook()

# 新しいシートを追加
ws2 = wb.create_sheet('NewSheet')

# 新しいシートにデータを書き込む
ws2['A1'] = 'Data in new sheet'

# ワークブックを保存
wb.save('multiple_sheets.xlsx')

グラフの作成

さらに、openpyxlライブラリはExcelのグラフ機能もサポートしています。

以下のコードは、データから折れ線グラフを作成します

from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference

# Workbookを作成
wb = Workbook()

# Worksheetを選択
ws = wb.active

# データを入力
rows = [
    ['Date', 'Batch 1', 'Batch 2', 'Batch 3'],
    ['2023-01-01', 10, 15, 30],
    ['2023-02-01', 40, 25, 10],
    ['2023-03-01', 50, 30, 20]
]
for row in rows:
    ws.append(row)

# グラフにプロットするデータを参照
data = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=4)

# グラフの作成
chart = LineChart()
chart.add_data(data, titles_from_data=True)
chart.title = 'Sales by Batch'
chart.x_axis.title = 'Date'
chart.y_axis.title = 'Quantity'

# グラフをワークシートに追加
ws.add_chart(chart, 'E5')

# ワークブックを保存
wb.save('chart.xlsx')

データフィルタリング

pandasライブラリは、DataFrameのデータを条件に基づいてフィルタリングする機能を提供します。

import pandas as pd

# Excelファイルを読み込む
df = pd.read_excel('sample.xlsx')

# 'Age'列が30以上のデータのみ抽出する
filtered_df = df[df['Age'] >= 30]

print(filtered_df)

セルの結合

Excelのセル結合も、openpyxlライブラリを用いて簡単に行えます

from openpyxl import Workbook

# Workbookを作成
wb = Workbook()

# Worksheetを選択
ws = wb.active

# セルを結合
ws.merge_cells('A1:B2')

ws['A1'] = 'Merged Cell'

# Workbookを保存
wb.save('merged_cells.xlsx')

条件付き書式設定

openpyxlを使用することで、条件付き書式設定を適用することが可能です

from openpyxl import Workbook
from openpyxl.styles import Color, PatternFill
from openpyxl.styles.differential import DifferentialStyle
from openpyxl.formatting.rule import Rule

# Workbookを作成
wb = Workbook()

# Worksheetを選択
ws = wb.active

# データを入力
for i in range(1, 11):
    ws.append([i, i*10])

# 赤色のフィル色を定義
red_fill = PatternFill(start_color='EE1111', end_color='EE1111', fill_type='solid')

# 条件を設定('A'列の値が50より大きい)
dxf = DifferentialStyle(fill=red_fill)
rule = Rule(type="expression", dxf=dxf)
rule.formula = ["$A1>5"]
ws.conditional_formatting.add("A1:A10", rule)

# Workbookを保存
wb.save('conditional_format.xlsx')

【まとめ】Pythonでエクセルを効率的に操作しよう!

この記事では、Pythonでエクセルを操作する方法について解説しました。

最後になりますが、私の体験談やみなさんの疑問に対して、できる限り分かりやすく記載したつもりです。

ですが、もしここに関してもっと詳しく教えて欲しいときなどは、遠慮なく、お問い合わせ、コメント、Twitterにてご連絡ください。

最後までお読みいただきありがとうございました。