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にてご連絡ください。
最後までお読みいただきありがとうございました。