OpenPyXL:PythonでExcelファイルを操作するための強力なライブラリ

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("売上データとグラフが作成されました。")
タイトルとURLをコピーしました