【Python】openpyxlでexcelシートをコピーし別ブック(ファイル)などに追加、結合する方法 | ウルトラフリーダム

【Python】openpyxlでexcelシートをコピーし別ブック(ファイル)などに追加、結合する方法

本サイトでは記事内に広告が含まれています。

この記事ではPythonのライブラリopenpyxlを使用してExcelシートをコピーし、別のブックに追加または結合する方法について解説していきます。

ポイントとしては`Workbook`と`load_workbook`関数の使用です。

この記事では完全な初心者でも理解しやすいように、変数名を少し変わった日本語ローマ字表記で示しています。

適宜英語表記に変更してご使用ください。

それでは詳細に見ていきましょう!

 

スポンサーリンク

openpyxlで指定ブックの先頭シートをコピーし別ブックの末尾に貼り付け、保存する方法【python】

それではまず、pythonで指定ブックの先頭シートをコピーして別ブックに貼り付ける方法について解説していきます。

jupyter notebookなどの各開発環境を開いて、以下コードをコピペしましょう。


import openpyxl

# ソースブックの読み込み
motobukku = openpyxl.load_workbook('source.xlsx')
motoshiito = motobukku.active

# 新しいブックの作成
atarashii_bukku = openpyxl.Workbook()
atarashii_shiito = atarashii_bukku.active

# シートの内容をコピー
for i, row in enumerate(motoshiito.iter_rows(values_only=True), start=1):
    for j, value in enumerate(row, start=1):
        atarashii_shiito.cell(row=i, column=j, value=value)

# 新しいブックを保存
atarashii_bukku.save('new_book.xlsx')

このコードでは、まずopenpyxlでソースブック(`source.xlsx`)を読み込み、その先頭シートを取得します。

次に新しいブックを作成し、そこに先頭シートの内容を1セルずつコピーします。最後に新しいブックを保存します。

【使用関数: `load_workbook`, `Workbook`, `save`】

 

openpyxlで3つの指定ブックを開き各々の先頭シートを別の新規ブックにコピー、順番に貼り付け、保存する方法

続いては、複数のブックのシートを別の新規ブックにコピーする方法について解説していきます。

jupyter notebookなどの各開発環境を開いて、以下コードをコピペしましょう。


import openpyxl

# 新しいブックの作成
atarashii_bukku = openpyxl.Workbook()
atarashii_shiito = atarashii_bukku.active

# コピーするブックのリスト
bukku_list = ['book1.xlsx', 'book2.xlsx', 'book3.xlsx']

# 各ブックの先頭シートを新しいブックにコピー
for bukku in bukku_list:
    motobukku = openpyxl.load_workbook(bukku)
    motoshiito = motobukku.active

    for i, row in enumerate(motoshiito.iter_rows(values_only=True), start=atarashii_shiito.max_row + 1):
        for j, value in enumerate(row, start=1):
            atarashii_shiito.cell(row=i, column=j, value=value)

# 新しいブックを保存
atarashii_bukku.save('combined_book.xlsx')

このコードでは、まず新しいブックを作成します。次

に、`bukku_list`に指定された各ブックを順番に開き、その先頭シートを新しいブックの末尾にコピーします。

最後に新しいブックを保存します。

【関数: `load_workbook`, `Workbook`, `save`, `iter_rows`, `cell`】

 

pythonでフォルダ内のすべてのエクセルファイルを開き、各々の先頭シートを別の新規ブックにコピー、順番に貼り付け、保存する方法

最後に、フォルダ内のすべてのExcelファイルから先頭シートをコピーする方法について解説します。

jupyter notebookなどの各開発環境を開いて、以下コードをコピペしましょう。


import openpyxl
import os

# 新しいブックの作成
atarashii_bukku = openpyxl.Workbook()
atarashii_shiito = atarashii_bukku.active

# フォルダ内のすべてのExcelファイルを検索
for file in os.listdir('folder_path'):
    if file.endswith('.xlsx'):
        # ファイルを開いて、先頭シートをコピー
        motobukku = openpyxl.load_workbook(file)
        motoshiito = motobukku.active

        for i, row in enumerate(motoshiito.iter_rows(values_only=True), start=atarashii_shiito.max_row + 1):
            for j, value in enumerate(row, start=1):
                atarashii_shiito.cell(row=i, column=j, value=value)

# 新しいブックを保存
atarashii_bukku.save('all_combined_book.xlsx')

このコードでは、指定されたフォルダ内のすべてのExcelファイルを検索し、各ファイルの先頭シートを新しいブックにコピーしていきます。

最後に新しいブックを保存します。

【関数: `load_workbook`, `Workbook`, `save`, `listdir`, `endswith`, `iter_rows`, `cell`】

 

まとめ

以上がPythonとのopenpyxlを使用してExcelシートをコピー操作する方法です。

Pythonをマスターして効率よく業務をこなしていきましょう!

コメント

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