PythonでExcel操作をするときには必ずファイル(ワークブック)の読み込みからシートの指定をする必要があります。
今回はそんな基本的な部分のコードの書き方を3ステップで紹介していきます。
1:openpyxlモジュールのインポート
Excel操作で使うのはopenpyxlモジュールです。「pip」でインストールしてから使いましょう。以下のようにインポートすると使うことができます。
1 |
>>> import openpyxl |
2:ファイルの読み込み
ファイルパスを「openpyxl.load_workbook関数」に渡す
1 2 |
>>> path = r"C:\Documents\sample.xlsx" >>> wb = openpyxl.load_workbook(path) |
この関数は引数がExcelファイルパスで戻り値がWorkbookオブジェクトです。
上の書き方ではこのオブジェクトをwb変数に格納しています。
以下ではこのオブジェクトのメソッドや属性を紹介しています。
3:シートの読み込み
シート名一覧を表示
- get_sheet_names()メソッドを使う
- 警告が出る
- sheetnames属性を使う
1 2 3 4 5 6 7 8 9 10 11 |
#ファイルを開く >>> path = r"C:\Documents\sample.xlsx" >>> wb = openpyxl.load_workbook(path) #シート名一覧を取得 >>> wb.get_sheet_names() ['シート1', 'シート2', 'シート3'] #推奨される方法 >>> wb.sheetnames ['シート1', 'シート2', 'シート3'] |
メソッドを使うとシート名一覧の取得はできますが「DeprecationWarning」という警告が出ます。『「sheetnames属性」を使ってね』という内容です。
メソッドを使う方法
- get_sheet_by_name()メソッドの引数にシート名を渡す
- シート名の全角と半角を間違えるとエラーになる
1 2 3 4 5 6 7 8 9 10 |
#ファイルを開く >>> path = r"C:\Documents\sample.xlsx" >>> wb = openpyxl.load_workbook(path) #シートを取得 >>> sheet = wb.get_sheet_by_name('シート1') #シート名の全半角を間違えるとエラー >>> sheet = wb.get_sheet_by_name('シート1') KeyError: 'Worksheet シート1 does not exist.' |
Workbookオブジェクトからシートと読み込むとWorksheetオブジェクトが作られます。
このメソッドでも取得できますが次に紹介する方法をを使ってくださいという警告が出る場合があります。以下に残り2つの方法を紹介しています。
インデックス指定
- worksheets属性に整数のインデックスを渡す
- ワークブックのシートに前から順に番号が割り振られている
1 2 3 4 5 6 |
#ファイルを開く >>> path = r"C:\Documents\sample.xlsx" >>> wb = openpyxl.load_workbook(path) #インデックス指定 >>> sheet = wb.worksheets[0] |
キー(シート名)を指定
作成したWorkbookオブジェクトに直接シート名を渡す
1 2 3 4 5 6 |
#ファイルを開く >>> path = r"C:\Documents\sample.xlsx" >>> wb = openpyxl.load_workbook(path) #キー(シート名)指定 >>> sheet = wb['シート1'] |
辞書のようにシート名をキーとしてWorksheetオブジェクトを取得しています。この書き方の方がシンプルですね。
保存して終了
- saveメソッドを使う
- 引数は保存先のExcelファイルパス
- 上書き保存したいなら開いたときのパスを渡せばOK
1 2 3 4 5 6 |
#ファイルを開く >>> path = r"C:\Documents\sample.xlsx" >>> wb = openpyxl.load_workbook(path) #保存 >>> wb.save(path) |
Workbookオブジェクトに対してsaveメソッドを使います。新規ファイルに保存したい場合はファイルパスを変更しましょう。
まとめ
- openpyxlをインストール&インポート
- Workbookオブジェクトを作成
- openpyxl.load_workbook()関数にパスを渡す
- シートの読み込む方法3つ
- get_sheet_by_name()メソッドにシート名を渡す
- worksheets属性にインデックスを指定
- Workbookオブジェクトにシート名を指定
- シート名一覧を取得する方法2つ
- get_sheet_names()メソッド(非推奨)
- sheetnames属性(推奨)
プログラミング言語のなかでも人気の高いPythonを学習する教材を紹介します。 最近ではプログラミングスククールがたくさんあるので迷うと思います。 ですが、まずは無料教材から始めてみましょう。苦労した分だけ力がつきます。 […]