openpyxlでエクセルファイルを編集しているんだけど、
セルの値を取得して、別のシートにコピーしたい…。
openpyxlを使ってできる方法は無いの?
なるほど…。
では今回は、「openpyxlでセルの値を取得する方法」を
できるだけわかりやすく解説いたします。
openpyxlでセルの値を取得する方法
「value」を使います。まずは実行見本をどうぞ。
実行見本
「Sheet1」の「A1セル」にある値を取得して、「Sheet2」の「B1セル」にコピーした見本です。
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import openpyxl
wb = openpyxl.load_workbook('input.xlsx')
ws1 = wb['Sheet1']
ws2 = wb['Sheet2']
ws1a1 = ws1['A1'].value
ws2['B1'] = ws1a1
wb.save('input.xlsx')
ws1a1 = ws1['A1'].value
ws2['B1'] = ws1a1
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
解説
セルの値を取得
ws1a1 = ws1['A1'].value
上記一文で、ws1(Sheet1)の「A1」セルの値を取得することができます。
値を取得するには、「.value」を付けてください。
【 変数 = ワークシート変数[‘値を取得したいセル名‘].value 】
取得した値を「ws1a1」という変数に入れています。
あとは下記のように、この変数をコピーしたいシートのコピーしたいセルに代入すればOKです。
ws2['B1'] = ws1a1
セルの指定方法(7行目)ですが、下記のコードでも結果は同じです。
ws1a1 = ws1.cell(row=1, column=1).value
「cell」は「セル」のことです。
「rowが行」「columnが列」を表しますので、1行目の1列目ということで、A1セルの値を取得します。
下記のように、「row」「column」を省略することもできます。
ws1a1 = ws1.cell(1, 1).value
慣れてきたらこの方が楽ですが、「左が行番号」「右が列番号」ですので、間違えないようにしましょう。
【行列】と覚えてください。
下記のように記述すると、変数に入れた値でセル位置を指定することもできます。
gyou = 1
retsu = 1
ws1a1 = ws1.cell(gyou, retsu).value
上記コードでも同じくA1セルを取得します。
これにより、例えば日付によって取得するセルの位置を変えたり、顧客コードに応じた列の値を取得することができます。
その他の解説
値の代入方法や、既存ファイルを開いて保存する方法などの操作の基本解説は、下記記事で行っております。
ご参考ください。
シート全体の値を取得する方法
上図のように、たくさんの値を取得したい場合は、「iter_rows()」や「iter_cols()」がおすすめです。
シート全体の値も簡単に取得できます。
ここで解説していると長くなるため、別の記事をご用意しておりますので、気になる方はご参考ください。
うまく動作しない時の対処法
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlでセルの値を取得する方法を解説いたしました。
別々のセルにある値を計算したり、各シートのデータをまとめる際に使ったりしますので、ぜひ活用してみてください。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!