OpenPyXLは、PythonでExcelファイル(.xlsx形式)を操作するためのライブラリです。このライブラリを使用することで、Excelファイルの読み書き、編集、スタイリングなどを行うことができます。OpenPyXLは、データ分析、レポート作成、自動化スクリプトなど、Excelを使用するさまざまなタスクにおいて非常に有用です。
OpenPyXlとは
OpenPyXLは、PythonでExcelファイル(.xlsx形式)を読み書きするためのライブラリです。
インストール
まず、OpenPyXLを使用するには、ライブラリをインストールする必要があります。以下のコマンドを使用します:
pip install openpyxl
Excelファイルの作成
Excelファイルを新規作成し、データを書き込む基本的な方法です。
import openpyxl
from openpyxl import Workbook
# ワークブックを作成
wb = Workbook()
# アクティブなシートを取得
ws = wb.active
# データの書き込み
ws['A1'] = '名前'
ws['B1'] = '年齢'
ws.append(['Alice', 25])
ws.append(['Bob', 30])
# Excelファイルの保存
wb.save('example.xlsx')
print("Excelファイルが作成されました。")
Excelファイルの読み込み
既存のExcelファイルを読み込み、データを操作する方法です。
import openpyxl
from openpyxl import load_workbook
# Excelファイルの読み込み
wb = load_workbook('example.xlsx')
# アクティブなシートを取得
ws = wb.active
# データの読み込み
for row in ws.iter_rows(values_only=True):
print(row)
セルの操作
セルの値を読み書きする方法です。
import openpyxl
from openpyxl import Workbook
# ワークブックを作成
wb = Workbook()
ws = wb.active
# セルの値を設定
ws['A1'] = 'Hello'
ws['B1'] = 'World'
ws.cell(row=2, column=1, value=42)
# セルの値を取得
print(ws['A1'].value)
print(ws.cell(row=2, column=1).value)
# Excelファイルの保存
wb.save('example.xlsx')
スタイルの適用
セルにスタイルを適用する方法です。
import openpyxl
from openpyxl.styles import Font, PatternFill
# ワークブックを作成
wb = Workbook()
ws = wb.active
# セルにデータを入力
ws['A1'] = 'Styled Text'
ws['B1'] = 42
# フォントのスタイルを適用
font = Font(name='Calibri', size=14, bold=True, italic=True)
ws['A1'].font = font
# 背景色のスタイルを適用
fill = PatternFill(fill_type='solid', start_color='FFFF00', end_color='FFFF00')
ws['B1'].fill = fill
# Excelファイルの保存
wb.save('styled_example.xlsx')
print("スタイルが適用されたExcelファイルが作成されました。")
実例
例題1: 成績表の作成と操作
以下の例では、学生の成績表を作成し、平均点を計算してExcelファイルに書き込みます。
import openpyxl
from openpyxl import Workbook
from openpyxl.styles import Font
# ワークブックを作成
wb = Workbook()
ws = wb.active
# ヘッダーを追加
ws.append(['名前', '数学', '英語', '科学'])
# 学生のデータを追加
students = [
['Alice', 90, 85, 88],
['Bob', 78, 82, 84],
['Charlie', 92, 88, 91]
]
for student in students:
ws.append(student)
# 平均点を計算して追加
ws.append(['平均'] + [sum(col)/len(students) for col in zip(*students)[1:]])
# ヘッダーと平均の行にスタイルを適用
font = Font(bold=True)
for cell in ws[1] + ws[ws.max_row]:
cell.font = font
# Excelファイルの保存
wb.save('grades.xlsx')
print("成績表が作成されました。")
例題2: 売上データの集計と可視化
以下の例では、売上データを読み込み、月ごとの合計売上を計算してExcelファイルに書き込みます。
import openpyxl
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
# ワークブックを作成
wb = Workbook()
ws = wb.active
# ヘッダーを追加
ws.append(['月', '売上'])
# 売上データを追加
sales_data = [
['1月', 3000],
['2月', 2800],
['3月', 3500],
['4月', 4000],
['5月', 3200],
['6月', 4100]
]
for data in sales_data:
ws.append(data)
# 合計売上を計算して追加
total_sales = sum(row[1] for row in sales_data)
ws.append(['合計', total_sales])
# 棒グラフを作成
chart = BarChart()
data = Reference(ws, min_col=2, min_row=1, max_col=2, max_row=len(sales_data))
categories = Reference(ws, min_col=1, min_row=2, max_row=len(sales_data))
chart.add_data(data, titles_from_data=True)
chart.set_categories(categories)
chart.title = "月ごとの売上"
chart.x_axis.title = "月"
chart.y_axis.title = "売上"
# グラフをシートに追加
ws.add_chart(chart, "E5")
# Excelファイルの保存
wb.save('sales.xlsx')
print("売上データとグラフが作成されました。")