今日も平常運転

楽しい人生を諦めないためのブログ

その4~解説編③~. 角括弧を使った情報取得

この記事について

  • 難易度★★☆☆☆
  • 所要時間 10分

エクセルファイルを編集するプログラム の解説をしていきます。
前回に引き続き第3回です。


目次



プログラムを見てみよう

# [学習済]パッケージをインポート
import openpyxl
 
# [学習済]ワークブックを作成(wbという名前にする)
wb = openpyxl.Workbook()
 
# ★ワークブックの Sheet というワークシートを取得(wsという名前にする)
ws = wb['Sheet']
 
# ★ワークシートのA1セルを取得(cellという名前にする)
cell = ws['A1']
 
# ★セルに'Hello'と書き込む
cell.value = 'Hello'
 
# [学習済]名前を付けて保存
wb.save('値の入ったエクセル.xlsx')

前回から進んでないですが...今回の学習範囲は★部分です。



セルを取得する

前回学習したエクセルのデータ構造を少し簡単にすると以下のようになります。

データ構造
  • ワークブック (Workbook)
    • ワークシート (Worksheet)
      • セル (Cell)


# [学習済]ワークブックを作成(wbという名前にする)
wb = openpyxl.Workbook()

ここまでは学習済みであり、ワークブックの情報はwb変数として既に持っている情報です。ワークブックからセルまでたどり着くには以下の手順を踏む必要があります。


  • ワークブックからワークシートを取得する
  • ワークシートからセルを取得する


ワークブックからワークシートを取得する

openpyxlで作成したワークブックには、デフォルトで 'Sheet' という名前のワークシートが存在しています。このワークシートを取得して
ws という変数に代入
しているのが以下の部分になります。

# ★ワークブックの Sheet というワークシートを取得(wsという名前にする)
ws = wb['Sheet']

右辺(=の右側)の結果を左辺(=の左側)に代入するんでしたね!


※ちなみに 存在しないワークシート名を指定するとエラーになります。

ws = wb['ほげほげ']  ← これはエラーになる


ワークシートからセルを取得する

ワークシートにはたくさんのセルがありますが、その中から目的のセルを取得するためにはセルアドレスを指定する必要があります。
ワークシート変数wsから、セルアドレス'A1'を指定してセルを取得し、cell という変数に代入
しているのが以下の部分になります。

# ★ワークシートのA1セルを取得(cellという名前にする)
cell = ws['A1']



角括弧を使った情報取得

ところで、さきほどから出てきている
〇〇['××']
という書き方はなんでしょう?


なんとなくわかっていると思いますが、これは
「〇〇の××」
を意味しています。

.(どっと)との違い

以前、「openpyxl Workbookという機能を実行する」という説明で

.(どっと)「~の」

という説明をしました。


f:id:code365:20200606134022g:plain


これと何が違うのか?


ポイント

[ ] は以下のような場合に使えることがある。

  • ワークブック(親) にとっての ワークシート(子)
    • シート名(条件) を指定する
  • ワークシート(親) にとっての セル(子)
    • セルアドレス(条件) を指定する

のような (親)(子)(条件) が明らかな場合

※これもopenpyxlの開発者がそのように作ってくれているからです。


もしも [ ] がなかった場合

もしも、この書き方がない場合は以下のような書き方になっていたかもしれません。

# ※このプログラムは『もしも』の話です。  
  
# ワークブックの Sheet というワークシートを取得
ws = wb.get_sheet('Sheet')

# ワークシートのA1セルを取得
cell = ws.get_cell('A1')


このような

  • <ワークブック>.get_sheet('シート名') でワークシートを取得する
  • <ワークシート>.get_cell('セルアドレス') でセルを取得する

みたいな機能が用意されていたかもしれません。
(もちろんこれでも全然問題ないです。過去にはopenpyxlにも似たような機能がありましたが [ ] を使った表記に統一されていきました。)


[ ] を使った書き方は より簡単に、より直感的に プログラムが書けるように用意された記法と思っていただければ良いです。
(初心者は混乱するかもしれませんが...)



openpyxl かんたんガイド に追加

機能を使うひと 機能名 内容 使い方
ワークブック [ ] ワークシートを取得する <ワークブック>['Sheet']
ワークシート [ ] セルを取得する <ワークシート>['A1']



次回予告

次回は解説編④です!
あとはセルに値を入れるだけ!!



使用させていただいたアプリ・サイト


ありがとうございました!