PythonでExcelファイルをシート毎に分割して保存する方法

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]

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com