大量のデータを扱うExcelでは、
「この1枚のシートだけ他の人に共有したい」「特定のシートだけ別ファイルにしたい」と思う場面、ありますよね。
実は、Pythonを使えば、複数シートを持つExcelファイルの中から
1つのシートだけを切り出して別ファイルに保存することが簡単にできます。
今回ご紹介するのは、Pythonの人気ライブラリ「openpyxl」を使った方法です。
⬛︎こんなことができるようになる!
・複数シートのExcelから、1つのシートだけを抜き出して保存できる
・元ファイルを壊さず、特定のシートだけを共有可能
・業務の効率化や、誤送信リスクの軽減に効果的
⬛︎使用ライブラリの準備
まず、Pythonがインストールされていることを確認してください。
次に、以下のライブラリをインストールします。
pip install openpyxl
⬛︎サンプルコード:特定のシートだけ保存する方法
では、例として、指定したExcelファイルを開いて対象シートをコピーしたいと思います。
今回は、「A.xlsx」というファイルの「売り上げシート」というシートを新しく別のブックとして保存してみましょう。
コードは以下の通りです。
from openpyxl import load_workbook, Workbook
# 元のファイルを読み込む
input_file = "A.xlsx"
sheet_to_extract = "売上シート"
# 元のブックからシートを取得
original_wb = load_workbook(input_file)
original_ws = original_wb[sheet_to_extract]
# 新しいブックを作成
new_wb = Workbook()
new_ws = new_wb.active
new_ws.title = sheet_to_extract
# セルの内容をすべてコピー
for row in original_ws.iter_rows(values_only=True):
new_ws.append(row)
# 新しいファイルとして保存
new_wb.save(f"{sheet_to_extract}.xlsx")
⬛︎コード解説
① load_workbook()
で元のExcelファイルを読み込みます
② .iter_rows(values_only=True)
で1行ずつ読み取り
③ append()
を使って新しいブックにコピー
④ save()
で新しいファイルに保存(元ファイルは変更されません)
実行した結果は以下の通りです。
無事、対象のシート名で新しくブックを作成することができました。
⬛︎応用:複数のシートを選んで保存したいときは?
以下のように、対象シート名をリスト化してループで処理すればOKです。
sheets_to_extract = ["売上", "在庫"]
for sheet_name in sheets_to_extract:
original_ws = original_wb[sheet_name]
new_wb = Workbook()
new_ws = new_wb.active
new_ws.title = sheet_name
for row in original_ws.iter_rows(values_only=True):
new_ws.append(row)
new_wb.save(f"{sheet_name}.xlsx")
⬛︎まとめ
Pythonを使えば、面倒な「シートだけ保存」の作業が一瞬で終わります!
■ この技術はこんな時に便利
・営業部だけに「売上」シートだけ送りたい
・在庫管理だけ別ファイルにしてクラウドで共有したい
・機密性の高いシートを切り離して渡したい