Python: Excelファイルはブック、シート、セルの順番でアクセス
Pythonでopenpyxlを使ってExcelファイルを操作する際の、 アクセスする順番について説明します。
エクセルファイルを構成する要素として次の3つがあります。
構成要素 | 概要 |
---|---|
ブック(ワークブック) | Excelファイル |
シート(ワークシート) | 1ページ(セルの集合) |
セル | 1つの四角いマス |
ワークブックはExcelファイルのことです。 1つのワークブックは複数のワークシートから構成されていて、 ワークシートはページとも言えます。 そのワークシートにある1つ1つの四角いマスがセルです。
これらの情報にアクセスする際は、 「ワークブック → ワークシート → セル」 の順番でアクセスします。
openpyxlをインポート
まずはopenpyxlをインポートして使用できるようにします。 モジュールをインポートするためのimport文の書式は次の通りです。
import モジュール名
次の文をコードに記述します。
import openpyxl
ワークブック(Excelファイル)へアクセス
ワークブックへアクセスするには、 openpyxlのload_workbookメソッドを使用します。
load_workbook(ファイルパス)
ファイルパスは相対パスでも絶対パスでも構いません。 次のように記述します。
相対パスの記述例
load_workbook("test.xlsx")
絶対パスの記述例
load_workbook("D:/test/python/test.xlsx")
インポートからワークブック「test.xlsx」を読み込むまでのコードは次のようになります。 読み込んだ結果を変数wbに格納しています。
# インポート import openpyxl # ワークブック wb = openpyxl.load_workbook("test.xlsx")
ワークシートへのアクセス
次はワークシートを取得します。
ワークシートの指定方法は次の2通りあります。
# シート名を指定 ws = wb[シート名] # シート番号を指定 ws = wb.worksheets[シート番号]
シート名はデフォルトでは「Sheet1」「Sheet2」
などと付けられているシートの名前のことです。
ワークブックを取得した変数「wb」の後の [](角括弧)の中に
wb["Sheet1"]のようにシート名を記述します。
シート番号はシートの順番のことで、 左から「0」、「1」...の順番になります。 最初は「0」であることに注意してください。 wb.worksheets[0]のように記述します。
インポートからワークシート取得までのコードは次のようになります。 ここではシート名「"Sheet1"」を指定し、変数wsに格納しています。
# インポート import openpyxl # ワークブック wb = openpyxl.load_workbook("test.xlsx") # ワークシート ws = wb["Sheet1"]
セルへのアクセス
最後にセルを取得します。 セルの指定方法は次の2通りあります。
# セル番地を指定 c = ws[セル番地] # 行番号、列番号を指定 c = ws.cell(行番号, 列番号)
セル番地とは"A1"、"B2"のように英字と数値の組み合わせです。 シートの上端に書かれているのが英字「A ~」、 シートの左端に書かれているのが数値「1 ~」で、 その組み合わせをセル番地といいます。
行番号、列番号は文字通り行と列の番号です。 縦方向が行番号、横方向が列番号になります。
インポートからセルを取得するまでのコードは次の通りです。 ここではセルを「行番号、列番号」を使って取得し、 変数cに格納しています。 3行2列目のセルには数値「100」が入っています。
# インポート import openpyxl # ワークブック wb = openpyxl.load_workbook("test.xlsx") # ワークシート ws = wb["Sheet1"] # セル c = ws.cell(3, 2) print(c) # <Cell 'Sheet1'.B3> # セルの値を表示 print(c.value) # 100
セルに格納されている値を取得するには、 最後の行のように「valueプロパティ」で取得します。
変数cをそのままprint(c)と表示しても、 セルの情報が表示されるだけで、セルに入っている値は取得できません。
セルの値の読み込みや書き込みについては次の記事を参考にしてください。
(関連記事:
Excelのセルの値の読み込み・書き込み)