PythonでExcelデータを簡単に一括書き込み!openpyxlの使い方と実用例

Python『openpyxl』を使ったExcel一括書き込み入門

この記事では、Pythonのopenpyxlライブラリを用いてExcelファイルにデータを一括で書き込む方法について詳しく解説します。実務やプロジェクトで役立つスキルを身につけるため、データの準備からフォーマットの適用、ファイルの保存やエラーハンドリングまで、具体的なコードとともに理解していきましょう。

ほかの記事

Python『openpyxl』を使ったExcel一括書き込みサンプルコード

# 必要なライブラリのインポート
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Border, Side

# 1. Excelファイルの作成
wb = Workbook()

# 2. シートの追加
ws = wb.create_sheet(title="新しいシート")

# 3. データ準備
data = [
    ["名前", "年齢", "職業"],
    ["田中", 30, "エンジニア"],
    ["鈴木", 25, "デザイナー"],
    ["佐藤", 22, "マーケター"]
]

# 4. シートへの一括書き込み
for row in data:
    ws.append(row)

# 5. フォーマットの適用
# 5.1 フォントの設定(ヘッダーを太字にする)
for cell in ws["1:1"]:
    cell.font = Font(bold=True)

# 5.2 背景色の設定(ヘッダーに色をつける)
fill = PatternFill(start_color="FFFF99", end_color="FFFF99", fill_type="solid")
for cell in ws["1:1"]:
    cell.fill = fill

# 5.3 ボーダーの設定(すべてのセルに境界線を適用)
border = Border(left=Side(style="thin"),
                right=Side(style="thin"),
                top=Side(style="thin"),
                bottom=Side(style="thin"))
for row in ws.iter_rows(min_row=1, max_row=4, min_col=1, max_col=3):
    for cell in row:
        cell.border = border

# 6. ファイル保存先の設定
file_path = "./data.xlsx"

# 7. エクセルファイルの保存
try:
    wb.save(file_path)
    print("ファイルが保存されました:", file_path)
except PermissionError:
    print("ファイルが開かれている可能性があります。ファイルを閉じてから再度保存してください。")

1. ライブラリのインポート

まず、Pythonの環境にopenpyxlライブラリがインストールされていることを確認します。インストールされていない場合は、以下のコマンドでインストールしてください。

pip install openpyxl

その後、openpyxlをインポートします。

from openpyxl import Workbook

このコードで、openpyxlのWorkbookオブジェクトを使用できるようになります。

2. Excelファイルの作成

次に、Excelファイルを作成します。Workbookオブジェクトを生成することで、新しいExcelファイルを操作できるようになります。

wb = Workbook()

ここで生成されたwbが、新しいExcelワークブックのインスタンスになります。

3. シートの追加

デフォルトでは、新しいワークブックには1つのシートが含まれていますが、追加のシートを必要に応じて作成できます。

ws = wb.create_sheet(title="新しいシート")

このコードで、名前が「新しいシート」のシートが追加されます。

4. データ準備

4.1 値のリスト化

Excelに書き込むためのデータを準備します。まず、リスト形式でデータを作成します。

data = [["名前", "年齢", "職業"], ["田中", 30, "エンジニア"], ["鈴木", 25, "デザイナー"], ["佐藤", 22, "マーケター"]]

このコードで、3行3列のデータが用意されました。

4.2 二次元配列への変換

書き込みの際は二次元配列のまま使用します。リスト内リストの形状でデータを保つことで、一括書き込みが容易になります。

5. シートへの一括書き込み

シートにデータを書き込むために、openpyxlのappendメソッドを使用します。

for row in data:
    ws.append(row)

このループで各行が順番にExcelシートに書き込まれます。

6. フォーマットの適用

次に、データに対してフォーマットを適用します。openpyxlではフォントの設定、背景色の変更、セルのボーダー設定が可能です。

6.1 フォントの設定

ヘッダー部分のフォントを強調するために、太字にします。

from openpyxl.styles import Font
for cell in ws["1:1"]:
    cell.font = Font(bold=True)

6.2 背景色の設定

openpyxlのPatternFillを使用して、セルに背景色を設定します。

from openpyxl.styles import PatternFill
fill = PatternFill(start_color="FFFF99", end_color="FFFF99", fill_type="solid")
for cell in ws["1:1"]:
    cell.fill = fill

6.3 ボーダーの設定

セルの境界線(ボーダー)を設定することも可能です。

from openpyxl.styles import Border, Side
border = Border(left=Side(style="thin"),
right=Side(style="thin"),
top=Side(style="thin"),
bottom=Side(style="thin"))
for row in ws.iter_rows(min_row=1, max_row=4, min_col=1, max_col=3):
    for cell in row:
        cell.border = border

このコードで、全てのデータに境界線が適用されます。

7. ファイル保存先の設定

保存先のパスを指定します。相対パス、絶対パスどちらも使用可能です。

file_path = "./data.xlsx"

相対パスで保存する場合はこのコードで十分です。

8. Excelファイルの保存

準備したデータを含むExcelファイルを保存します。saveメソッドを使用します。

wb.save(file_path)

これにより、ファイルが指定したパスに保存されます。

9. ファイルの閲覧

作成したファイルが正常に保存されているかを確認するため、Excelで開いて内容をチェックしましょう。

10. エラー処理

ファイル操作の際には、エラーハンドリングを行うことで、エラーが発生してもプログラムが異常終了しないようにします。

try:
    wb.save(file_path)
except PermissionError:
    print("ファイルが開かれている可能性があります。ファイルを閉じてから再度保存してください。")

このコードで、保存時にファイルが開かれているとPermissionErrorが発生するため、それを回避します。

まとめ

この記事では、Pythonのopenpyxlライブラリを使ってExcelファイルにデータを書き込む方法について学びました。ファイルの生成、データの書き込み、フォーマットの適用、エラー処理を理解することで、実務でも役立つExcel操作スキルを習得できたでしょう。今後は、さらに高度なExcel処理にも挑戦してみましょう。

openpyxlの公式サイトはこちらからアクセスできます:

これらのリンクから、openpyxlの最新バージョン情報やソースコード、ドキュメントを確認できます。

コメント

タイトルとURLをコピーしました