[Python] エクセルのシート名を取得する方法
Pythonでエクセルファイルのシート名を取得するには、openpyxl
やpandas
といったライブラリを使用する方法があります。
openpyxl
を使用する場合、load_workbook
関数でワークブックを読み込み、sheetnames
属性を参照することでシート名を取得できます。
一方、pandas
を使用する場合、ExcelFile
クラスを用いてエクセルファイルを読み込み、sheet_names
属性を利用してシート名を取得します。
これらの方法を活用することで、エクセルファイル内のシート名を簡単に取得することが可能です。
openpyxlを使ったシート名の取得
PythonでExcelファイルを操作する際に便利なライブラリの一つがopenpyxl
です。
このセクションでは、openpyxl
を使ってExcelファイルからシート名を取得する方法について解説します。
openpyxlのインストール方法
openpyxl
はPythonの外部ライブラリであるため、まずはインストールが必要です。
以下のコマンドを使用してインストールを行います。
pip install openpyxl
このコマンドを実行することで、openpyxl
がインストールされ、Pythonスクリプト内で使用できるようになります。
ワークブックの読み込み
Excelファイルを操作するためには、まずワークブックを読み込む必要があります。
以下のサンプルコードでは、openpyxl
を使ってExcelファイルを読み込む方法を示します。
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
このコードでは、example.xlsx
という名前のExcelファイルを読み込んでいます。
load_workbook関数
を使用することで、指定したファイルをワークブックオブジェクトとして取得できます。
シート名の一覧を取得する方法
ワークブックを読み込んだ後は、シート名の一覧を取得することができます。
以下のサンプルコードを参照してください。
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
# シート名の一覧を取得
sheet_names = workbook.sheetnames
# シート名を表示
for sheet_name in sheet_names:
print(sheet_name)
このコードでは、workbook.sheetnames
を使用してシート名のリストを取得しています。
sheetnames
は、ワークブック内のすべてのシート名をリストとして返します。
取得したシート名をループで回して表示することで、Excelファイルに含まれるすべてのシート名を確認できます。
Sheet1
Sheet2
Sheet3
この例では、example.xlsx
というExcelファイルに3つのシートが含まれており、それぞれのシート名が表示されています。
openpyxl
を使うことで、簡単にExcelファイルのシート名を取得することができます。
pandasを使ったシート名の取得
pandas
はデータ解析に非常に便利なPythonライブラリで、Excelファイルの操作にも対応しています。
このセクションでは、pandas
を使ってExcelファイルからシート名を取得する方法を解説します。
pandasのインストール方法
pandas
を使用するには、まずライブラリをインストールする必要があります。
以下のコマンドを使用してインストールを行います。
pip install pandas
このコマンドを実行することで、pandas
がインストールされ、Pythonスクリプト内で使用できるようになります。
Excelファイルの読み込み
pandas
を使ってExcelファイルを読み込むには、pandas
のread_excel関数
を使用します。
以下のサンプルコードでは、Excelファイルを読み込む方法を示します。
import pandas as pd
# Excelファイルを読み込む
excel_file = pd.ExcelFile('example.xlsx')
このコードでは、example.xlsx
という名前のExcelファイルを読み込んでいます。
pd.ExcelFile
を使用することで、Excelファイルをオブジェクトとして取得できます。
シート名の取得方法
Excelファイルを読み込んだ後は、シート名の一覧を取得することができます。
以下のサンプルコードを参照してください。
import pandas as pd
# Excelファイルを読み込む
excel_file = pd.ExcelFile('example.xlsx')
# シート名の一覧を取得
sheet_names = excel_file.sheet_names
# シート名を表示
for sheet_name in sheet_names:
print(sheet_name)
このコードでは、excel_file.sheet_names
を使用してシート名のリストを取得しています。
sheet_names
は、Excelファイル内のすべてのシート名をリストとして返します。
取得したシート名をループで回して表示することで、Excelファイルに含まれるすべてのシート名を確認できます。
Sheet1
Sheet2
Sheet3
この例では、example.xlsx
というExcelファイルに3つのシートが含まれており、それぞれのシート名が表示されています。
pandas
を使うことで、簡単にExcelファイルのシート名を取得することができます。
xlrdを使ったシート名の取得
xlrd
は、Excelファイルを読み込むためのPythonライブラリです。
特に古いバージョンのExcelファイル(.xls形式)を扱う際に便利です。
このセクションでは、xlrd
を使ってExcelファイルからシート名を取得する方法を解説します。
xlrdのインストール方法
xlrd
を使用するには、まずライブラリをインストールする必要があります。
以下のコマンドを使用してインストールを行います。
pip install xlrd
このコマンドを実行することで、xlrd
がインストールされ、Pythonスクリプト内で使用できるようになります。
ワークブックの読み込み
Excelファイルを操作するためには、まずワークブックを読み込む必要があります。
以下のサンプルコードでは、xlrd
を使ってExcelファイルを読み込む方法を示します。
import xlrd
# Excelファイルを読み込む
workbook = xlrd.open_workbook('example.xls')
このコードでは、example.xls
という名前のExcelファイルを読み込んでいます。
open_workbook関数
を使用することで、指定したファイルをワークブックオブジェクトとして取得できます。
シート名の取得方法
ワークブックを読み込んだ後は、シート名の一覧を取得することができます。
以下のサンプルコードを参照してください。
import xlrd
# Excelファイルを読み込む
workbook = xlrd.open_workbook('example.xls')
# シート名の一覧を取得
sheet_names = workbook.sheet_names()
# シート名を表示
for sheet_name in sheet_names:
print(sheet_name)
このコードでは、workbook.sheet_names()
を使用してシート名のリストを取得しています。
sheet_names()
は、ワークブック内のすべてのシート名をリストとして返します。
取得したシート名をループで回して表示することで、Excelファイルに含まれるすべてのシート名を確認できます。
Sheet1
Sheet2
Sheet3
この例では、example.xls
というExcelファイルに3つのシートが含まれており、それぞれのシート名が表示されています。
xlrd
を使うことで、簡単にExcelファイルのシート名を取得することができます。
応用例
Excelファイルのシート名を取得する基本的な方法を学んだところで、ここでは応用例として、複数のExcelファイルからシート名を一括で取得し、保存する方法を解説します。
複数ファイルからシート名を一括取得
複数のExcelファイルからシート名を一括で取得するには、Pythonのos
モジュールを使ってディレクトリ内のファイルを操作する方法が便利です。
複数ファイルの読み込み方法
まず、指定したディレクトリ内のすべてのExcelファイルを読み込む方法を示します。
import os
import openpyxl
# ディレクトリ内のすべてのExcelファイルを取得
directory = 'path/to/excel/files'
excel_files = [f for f in os.listdir(directory) if f.endswith('.xlsx')]
# 各Excelファイルを読み込む
for file in excel_files:
workbook = openpyxl.load_workbook(os.path.join(directory, file))
print(f"Loaded {file}")
このコードでは、指定したディレクトリ内のすべての.xlsx
ファイルをリストに格納し、それぞれのファイルをopenpyxl
で読み込んでいます。
シート名の一括取得と保存
次に、取得したシート名を一括で保存する方法を示します。
import os
import openpyxl
# ディレクトリ内のすべてのExcelファイルを取得
directory = 'path/to/excel/files'
excel_files = [f for f in os.listdir(directory) if f.endswith('.xlsx')]
# シート名を保存するための辞書
sheets_dict = {}
# 各Excelファイルからシート名を取得
for file in excel_files:
workbook = openpyxl.load_workbook(os.path.join(directory, file))
sheet_names = workbook.sheetnames
sheets_dict[file] = sheet_names
# シート名を表示
for file, sheet_names in sheets_dict.items():
print(f"{file}: {sheet_names}")
このコードでは、各Excelファイルからシート名を取得し、ファイル名をキー、シート名のリストを値とする辞書に保存しています。
最後に、辞書をループで回して、各ファイルのシート名を表示しています。
file1.xlsx: ['Sheet1', 'Sheet2']
file2.xlsx: ['SheetA', 'SheetB', 'SheetC']
この例では、指定したディレクトリ内の各Excelファイルのシート名が表示されます。
これにより、複数のExcelファイルから効率的にシート名を取得し、管理することができます。
シート名を条件にフィルタリング
Excelファイルのシート名を取得する際に、特定の条件に基づいてフィルタリングすることができます。
このセクションでは、特定の文字列を含むシート名の取得方法と、正規表現を使ったシート名のフィルタリング方法を解説します。
特定の文字列を含むシート名の取得
特定の文字列を含むシート名を取得するには、Pythonの文字列操作を活用します。
以下のサンプルコードでは、openpyxl
を使って特定の文字列を含むシート名を取得する方法を示します。
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
# 特定の文字列を含むシート名を取得
keyword = '2023'
filtered_sheets = [sheet for sheet in workbook.sheetnames if keyword in sheet]
# フィルタリングされたシート名を表示
for sheet_name in filtered_sheets:
print(sheet_name)
このコードでは、2023
という文字列を含むシート名をリスト内包表記を使ってフィルタリングしています。
workbook.sheetnames
から条件に合致するシート名だけを抽出し、表示しています。
Sales_2023
Budget_2023
この例では、example.xlsx
というExcelファイルに含まれるシート名のうち、2023
を含むものが表示されます。
正規表現を使ったシート名のフィルタリング
正規表現を使うことで、より柔軟な条件でシート名をフィルタリングすることができます。
以下のサンプルコードでは、re
モジュールを使って正規表現によるフィルタリングを行います。
import openpyxl
import re
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
# 正規表現を使ったシート名のフィルタリング
pattern = re.compile(r'^Report_\d{4}$')
filtered_sheets = [sheet for sheet in workbook.sheetnames if pattern.match(sheet)]
# フィルタリングされたシート名を表示
for sheet_name in filtered_sheets:
print(sheet_name)
このコードでは、^Report_\d{4}$
という正規表現パターンを使用して、Report_
で始まり、4桁の数字で終わるシート名をフィルタリングしています。
re.compile
で正規表現パターンを作成し、pattern.match
で各シート名をチェックしています。
Report_2021
Report_2022
この例では、example.xlsx
というExcelファイルに含まれるシート名のうち、Report_
で始まり、4桁の数字で終わるものが表示されます。
正規表現を使うことで、複雑な条件に基づくフィルタリングが可能になります。
シート名の変更と保存
Excelファイルのシート名を変更し、その変更を保存することは、データの整理や管理において重要です。
このセクションでは、openpyxl
を使ってシート名を変更する方法と、変更後のファイルを保存する方法を解説します。
シート名の変更方法
openpyxl
を使ってシート名を変更するには、シートオブジェクトのtitle
属性を設定します。
以下のサンプルコードでは、シート名を変更する方法を示します。
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
# シート名を変更
sheet = workbook['OldSheetName']
sheet.title = 'NewSheetName'
# 変更後のシート名を表示
print(f"シート名が変更されました: {sheet.title}")
このコードでは、OldSheetName
という名前のシートをNewSheetName
に変更しています。
workbook['OldSheetName']
でシートオブジェクトを取得し、そのtitle
属性に新しい名前を設定することで、シート名を変更できます。
シート名が変更されました: NewSheetName
この例では、指定したシート名が新しい名前に変更されたことが確認できます。
変更後のファイルの保存
シート名を変更した後は、その変更をExcelファイルに保存する必要があります。
以下のサンプルコードでは、変更後のファイルを保存する方法を示します。
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
# シート名を変更
sheet = workbook['OldSheetName']
sheet.title = 'NewSheetName'
# 変更を保存
workbook.save('example_modified.xlsx')
print("変更が保存されました: example_modified.xlsx")
このコードでは、workbook.save('example_modified.xlsx')
を使用して、変更を新しいファイルexample_modified.xlsx
に保存しています。
これにより、元のファイルを上書きせずに変更を保存することができます。
変更が保存されました: example_modified.xlsx
この例では、変更されたシート名が新しいファイルに保存され、元のファイルはそのまま残ります。
openpyxl
を使うことで、簡単にシート名を変更し、その変更を保存することができます。
まとめ
この記事では、Pythonを使ってExcelファイルのシート名を取得する方法について、openpyxl
、pandas
、xlrd
の3つのライブラリを用いて解説しました。
さらに、シート名のフィルタリングや変更、複数ファイルの処理方法についても紹介しました。
これらの方法を活用することで、Excelファイルの操作がより効率的に行えるようになります。
ぜひ、この記事で学んだ知識を活用して、Excelファイルの操作を実践してみてください。