PythonのopenpyxlでExcelファイルを作成・書き込みする基本

この記事では、Pythonのopenpyxlライブラリを使い、新しいExcelワークブックの作成、シートの追加・削除、セルへのデータ書き込みといった、基本的なExcelファイル書き出し操作について解説します。


目次

1. 新しいExcelブックの作成と保存

openpyxl.Workbook()を呼び出すことで、メモリ上に新しい空のワークブックが作成されます。この時点ではまだファイルは保存されていません。

ワークブックには、デフォルトで'Sheet'という名前のシートが一つ含まれています。wb.activeでこのシートにアクセスし、.title属性で名前を変更できます。

最後に、wb.save()メソッドを呼び出して、ワークブックを.xlsxファイルとしてディスクに保存します。

import openpyxl

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

# アクティブなシートを取得
sheet = workbook.active

# シートのタイトルを変更
sheet.title = 'SalesReport'

# 'sales_report_2025.xlsx'という名前でファイルを保存
workbook.save('sales_report_2025.xlsx')

2. シートの追加と削除

ワークブックに新しいシートを追加したり、不要なシートを削除したりすることも簡単です。

wb.create_sheet() このメソッドは新しいシートを作成します。title引数でシート名を、index引数でシートの位置(0から始まる)を指定できます。

del wb['シート名'] 指定した名前のシートを削除します。(古いremove_sheet()は非推奨)

import openpyxl

# 空のワークブックを作成
workbook = openpyxl.Workbook()

print(f"作成直後のシート: {workbook.sheetnames}")

# 新しいシートを追加
workbook.create_sheet(title='ProductsList', index=0) # 先頭にシートを追加
workbook.create_sheet(title='ClientData') # 末尾にシートを追加

print(f"追加後のシート: {workbook.sheetnames}")

# 'Sheet'という名前のデフォルトシートを削除
del workbook['Sheet']

print(f"削除後のシート: {workbook.sheetnames}")

workbook.save('multi_sheet_example.xlsx')

3. セルに値を書き込む

シートオブジェクトのセルに値を書き込むには、'A1'のような座標をキーとして直接代入するのが最も簡単な方法です。

import openpyxl

# 新しいワークブックを作成
workbook = openpyxl.Workbook()
sheet = workbook.active

# セルA1に文字列を書き込む
sheet['A1'] = 'Sample Report'

# セルB2に数値を書き込む
sheet['B2'] = 12345

# 簡単なデータリストを書き込むループ
data = [
    ['Product', 'Price', 'Stock'],
    ['Apple', 150, 200],
    ['Banana', 120, 350],
]

for row_data in data:
    sheet.append(row_data) # appendは次の空いている行にリストを書き込む便利なメソッド

workbook.save('data_entry_example.xlsx')

まとめ

openpyxlによるExcelファイルの作成と書き出しは、openpyxl.Workbook()で新しいブックオブジェクトを作成し、シートを操作(名前変更、追加、削除)し、セルにsheet['A1'] = valueのように値を代入し、最後にworkbook.save()でファイルに保存する、という流れで行います。これらの基本操作を組み合わせることで、プログラムの計算結果を整形されたExcelレポートとして出力するなど、様々なタスクを自動化できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次