Excel Python プログラム

Pythonを使用してExcelのファイルからシート名取得・追加・削除・読み込みする方法

2021/07/18

Pythonを使用してExcelのファイルからシート名を取得・読み込みする方法について紹介。

Excelのシート名取得・読み込みはPythonでExcelを操作する上で基本的な操作になってきます。覚えておくことで大量のシート操作などができるようになります。

複数のExcelファイルを操作するとなると時間がかかるため、Pythonで自動化してしまえば、その時間は優雅にティータイムや別作業にあてておきたい。

pythonでExcel(エクセル)のシート名取得・読み込み

今回は2つの方法で紹介しようと思う。

  1. openpyxlを使用したシート名取得・読み込み
  2. 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にやらせようで学習していたりします。

-Excel, Python, プログラム