この記事では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をマスターして効率よく業務をこなしていきましょう!
コメント