openpyxlでエクセルファイルを編集しているんだけど、
特定の範囲のセルだけを読み込みしたい…。
なるほど…。
では今回は、「openpyxlでセルの範囲を指定して読み込みする方法」を
できるだけわかりやすく解説したします。
openpyxlでセル範囲を指定して読み込みする方法
「for文」を使います。
今回はわかりやすく、読み込みした範囲の値を削除する処理を見ていきましょう。
まずは全コードと実行結果をお見せします。
解説は後ほど行います。
全コード
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
for row in ws['B2:D4']:
for cell in row:
cell.value = None
wb.save('C:/Utatane/output.xlsx')
for row in ws['B2:D4']:
for cell in row:
cell.value = None
実行結果
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
インポート~ブック・シートの取得
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
上記コードにて、エクセル操作に必要な「openpyxl」のインポートと、エクセルブック・シートを取得しています。
詳細は、「インストール方法」の記事をご参考ください。
セルの範囲を指定して読み込み
for row in ws['B2:D4']:
for cell in row:
cell.value = None
上記コードにて、特定の範囲読み込みし、その範囲の値を削除ています。
6行目の最後に【 ws[‘B2:D4’] 】と記述することで読み込み範囲を限定することができます。
そしてまずはB2セルを取得し、値を削除しています。
for文を使い、「B2~D4」に同じ処理を繰り返しているというわけです。
for文については下記記事をご参考ください。
読み込みしたい範囲に応じて、[‘B2:D4’]の部分を変えてください。
また、やりたい処理に応じて8行目を変えましょう。
openpyxlでセル範囲を指定して読み込みする方法(別解)
下記コードでも、範囲を指定して読み込みすることができます。
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
for row in ws.iter_rows(min_row=2,min_col=2,max_row=4,max_col=4):
for cell in row:
cell.value = None
wb.save('C:/Utatane/output.xlsx')
前項と同様に「B2~D4」を削除できました。
前項との違いは、6行目の後半だけで、「iter_rows」を使用しています。
「iter_rows」については下記記事をご参考ください。
この方法を使うことで、数値が入った変数でも読み込み範囲を指定できます。
(9行目以降を下記のように変えても同じ結果が出力される)
a=2
b=4
for row in ws.iter_rows(min_row=a,min_col=a,max_row=b,max_col=b):
for cell in row:
cell.value = None
例えば、「とあるセルから取得した数値分の行・列を削除する」ということができるわけです。
うまく動作しない場合の対処法
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlでセルの範囲を指定して読み込みする方法を解説いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!