Pythonを使用してExcelのファイルからシート名取得・追加・削除・読み込みする方法
2021/07/18
Pythonを使用してExcelのファイルからシート名を取得・読み込みする方法について紹介。
Excelのシート名取得・読み込みはPythonでExcelを操作する上で基本的な操作になってきます。覚えておくことで大量のシート操作などができるようになります。
複数のExcelファイルを操作するとなると時間がかかるため、Pythonで自動化してしまえば、その時間は優雅にティータイムや別作業にあてておきたい。
pythonでExcel(エクセル)のシート名取得・読み込み
今回は2つの方法で紹介しようと思う。
- openpyxlを使用したシート名取得・読み込み
- win32comを使用したシート名取得・読み込み
どちらの方法でも同じような結果を出すことが出来る。個人的な使い分けとしては、Excelファイルのみで完結するのか?どうかで使い分けをしている。
【openpyxl】
- Excelのデータの集計や自動化のみをしたい場合はこちらがオススメ。単純なデータ分析の自動化などExcelのみで完結して、その他Officeとの連携は考えていない。
【win32com】
※win32comはPCのOSがWindowsで、かつExcelがインストールされている必要あり
- officeでの連携を考えている場合はコチラがオススメ。例えば、Excelのファイルを作成後にOutlookでメールを送る・Excelで集計した結果をWordに張り付けるなど。さらに複雑なExcelの操作をしたい場合もコチラがオススメとなります。
使用データ
今回は「日本の祝日」と「天気」をまとめた(japan_ingo.xlsx)のデータを使用。
「日本の祝日」は、内閣府が出している「国民の祝日」についてのデータを使用。「天気」は、気象庁の過去データを使用。
これはサンプルのため、個人でExcelファイルを用意してもらえればと。
前提知識
事前にPythonでExcelの操作方法を簡単に学んでおいたほうがいい。下記で簡単なExcelファイルの操作方法を学べる。
openpyxlの場合
最初はopenpyxlというライブラリを使用した場合のシート名取得・読み込方法を紹介していきます。
基本構文は以下となっております。
import openpyxl #ファイルのパスを指定 file_path = r"C:\Users\user\Desktop\sample\japan_info.xlsx" #ファイルを開く excelBook = openpyxl.load_workbook(file_path) #全てのシート名をリスト取得 #特定のシートを読み込む #シートの追加 #シートの削除 #ファイルに名前を付けて保存 excelBook.save(file_path)
シート名取得
シート名の取得
#全てのシート名をリスト取得 excelSheets = excelBook.sheetnames print(excelSheets) # >>> ['祝日', '天気']
特定シート読み込む
特定シートを読み込む
#特定のシートを読み込む excelSheet = excelBook['祝日']
シートの追加
シートの追加
#シートの追加 excelBook.create_sheet(title='sample')
シートの削除
シートの削除
#シートの削除 excelBook.remove(excelBook['sample'])
win32comの場合
次はwin32comというライブラリを使用した場合のシート名取得・読み込みを紹介していきます。
基本構文は以下となっております。
import win32com.client file_path = r"C:\Users\user\Desktop\sample\japan_info.xlsx" #Excelファイル操作のための準備 excel = win32com.client.Dispatch("Excel.Application") #ファイルを開く wb = excel.Workbooks.Open(Filename=file_path) #全てのシート名をリスト取得 #特定のシートを読み込む #シートの追加 #シートの削除 #Excelファイルを保存 wb.Save() #Excelを閉じる excel.Quit()
シート名取得
シート名の取得
#全てのシート名をリスト取得 excelSheets = [] for sheet in wb.Worksheets: excelSheets.append(sheet.name) print(excelSheets) # >>> ['祝日', '天気']
特定シート読み込む
特定シートを読み込む
#特定のシートを読み込む excelSheet = wb.worksheets('祝日')
シートの追加
シートの追加
#シートの追加 wb.Worksheets.add.Name = 'sample'
シートの削除
シートの削除
#シートの削除 wb.Worksheets('sample').delete
まとめ
PythonでExcelを操作する場合は、Workbook/Worksheet/Cellなどの操作はかなり基本的で重要なものとなってきます。
基本的な操作であれば、openpyxlでも問題ありません。ただ、複雑な操作や他Officeとの連携をする場合は、win32comがオススメとなります。
win32.comはドキュメントが無いため、プログラムの書き方は分かりずらいのですが、VBAと同じような書き方となりますので、VBAの本を買ったほうがいいでしょう。
openpyxlはいろんな本が出ているのでわかりやすいなどがありますね。私の場合、openpyxlは退屈なことはPythonにやらせようで学習していたりします。