Excelファイルを扱う際、膨大なデータが複数のシートに収められていることがよくあります。しかし、特定のデータを必要とする場合やデータとして扱いやすくしたい場合には、シート毎に分割して保存する必要があります。Pythonを使えば、この作業を自動化することが可能です。以下では、Pythonを用いてExcelファイルをシート毎に分割して、保存する方法を説明します。
1. 必要なライブラリのインストール
まず、openpyxl
というPythonのライブラリをインストールします。これはExcelファイルを扱うためのライブラリです。
pip install openpyxl
2. Pythonコードの作成
次に、以下のPythonコードを使ってExcelファイルをシート毎に分割して保存します。
from openpyxl import load_workbook def split_excel_sheets(input_file): wb = load_workbook(input_file) for sheet in wb.sheetnames: new_wb = Workbook() new_wb.active.title = sheet new_sheet = new_wb.active source = wb[sheet] for row in source.iter_rows(): new_sheet.append([cell.value for cell in row]) new_wb.save(f"{sheet}.xlsx") if __name__ == "__main__": input_file = "input.xlsx" # 入力Excelファイルの名前 split_excel_sheets(input_file)
このコードでは、load_workbook()
関数を使ってExcelファイルを読み込み、sheetnames
属性を使って各シートの名前を取得します。その後、各シートごとに新しいExcelファイルを作成し、元のシートのデータをそのまま新しいExcelファイルに書き込みます。
コードを実行する際は、input_file
の部分を実際のExcelファイルの名前に変更します。Excelファイルはスクリプトと同じディレクトリに保存しておきます。その後、スクリプトを実行すると、各シートが個別のExcelファイルとして保存されます。
コードの説明
2.1. ライブラリのインポート
openpyxl
からload_workbook
関数をインポートしています。これはExcelファイルを読み込むための関数です。
from openpyxl import load_workbook
2.2. 関数の定義
split_excel_sheets
という関数を定義しています。この関数は、引数としてExcelファイルのパスを受け取ります。
def split_excel_sheets(input_file):
2.3. Excelファイルの読み込みとシートの分割
load_workbook
関数を使って、指定されたExcelファイルを読み込みます。読み込んだExcelファイルの情報はwb
変数に格納されます。
wb = load_workbook(input_file)
wb.sheetnames
を使って、Excelファイル内の全てのシート名に対してループを行います。
for sheet in wb.sheetnames:
新しいExcelファイルを作成するためのWorkbook()
クラスを使って、new_wb
変数に新しいワークブックオブジェクトを作成します。
new_wb = Workbook()
新しいワークブックのアクティブなシートのタイトルを、元のExcelファイルから取得したシート名に設定します。
new_wb.active.title = sheet
new_wb
のアクティブなシートをnew_sheet
という変数に格納します。
new_sheet = new_wb.active
元のExcelファイルから指定されたシートのデータを取得し、source
変数に格納します。
source = wb[sheet]
source
から1行ずつデータを取り出し、new_sheet
に追加しています。ここではイテレータを使ってシートの全行を順に取得し、新しいシートに行を追加しています。
for row in source.iter_rows(): new_sheet.append([cell.value for cell in row])
新しいワークブックを元のシート名をファイル名として保存します。これにより、各シートが個別のExcelファイルとして保存されます。
new_wb.save(f"{sheet}.xlsx")
2.4. メインプログラムの実行
スクリプトが直接実行される場合にのみ、split_excel_sheets
関数を呼び出して処理を実行します。入力ファイル名は"input.xlsx"として指定されていますが、必要に応じて変更できます。
if __name__ == "__main__": input_file = "input.xlsx" # 入力Excelファイルの名前 split_excel_sheets(input_file)
まとめ
以上がPythonを使ってExcelファイルをシート毎に分割して保存する方法です。この方法を使えば、データ分析や機械学習の前処理段階で、必要な部分だけを抽出したり処理したりすることが可能です。特に、Excelファイルに大量のデータが含まれている場合、シート毎に分割することでデータをより管理しやすくなります。特定のシートだけを処理したい場合や、シート毎に異なる処理を行いたい場合に便利です。
[PR]