openpyxlでアンケートを作成することになったんだけど、
「はい」「いいえ」「どちらでもない」の3つだけが選べるように、
ドロップダウンリストを作りたい…。
なるほど…。
では今回は、「openpyxlでドロップダウンリスト(プルダウン)を作成する方法」を
できるだけわかりやすく解説いたします。
openpyxlでドロップダウンリストを作成する方法
「DataValidation」を使います。まずは全コードと実行結果をお見せします。
解説は後ほど行います。
全コード
import openpyxl
from openpyxl.worksheet.datavalidation import DataValidation
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
dv = DataValidation(type='list', formula1='"はい,いいえ,どちらでもない"', showErrorMessage=True)
dv.error = 'リスト内の値を選択してください。'
ws.add_data_validation(dv)
dv.add('A1')
wb.save('C:/Utatane/output.xlsx')
dv = DataValidation(type='list', formula1='"はい,いいえ,どちらでもない"', showErrorMessage=True)
実行結果
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
インポート
まずはインポートの解説です。
import openpyxl
from openpyxl.worksheet.datavalidation import DataValidation
ドロップダウンリスト(プルダウン)を設定するには、コード2行目(datavalidation)のインポートが必要です。
また、openpyxlを使用するため1行目のインポートも忘れず記述しましょう。
ドロップダウンリスト(プルダウン)の設定
次にドロップダウンリスト(プルダウン)の設定方法の解説です。
dv = DataValidation(type='list', formula1='"はい,いいえ,どちらでもない"', showErrorMessage=True)
dv.error = 'リスト内の値を選択してください。'
コードの7行目にて、「ドロップダウンリスト(プルダウン)」を設定しています。
8行目は、ドロップダウンリスト内の値以外が入力された場合に「エラーメッセージ」を表示させる設定です。
【コードの解説】
新しい名前の変数を書いたら、「=(イコール)」を書きます。
今回はわかりやすく「dv(datavalidationの略)」という変数名にしましたが、何でも構いません。
しかしながら、つけられない名前があったりしますので、下記記事をご参考ください。
イコールの後ろには、「DataValidation()」を書きます。
()内には、「type=’list’」,「リストの内容」,「showErrorMessage=True」を記述します。
<ドロップダウンリスト(プルダウン)の設定テンプレ>
【 変数 = DataValidation(type=’list’, formula1='”リストの内容“‘, showErrorMessage=True) 】
各要素の間には「,(カンマ)」を記述することを忘れないでください。
「リストの内容」も、それぞれの要素の間にカンマを記述しましょう。
ドロップダウンリスト内の値以外が入力されてもいい場合は、「showErrorMessage=False」と記述してください。
その場合、コードの8行目は不要です。
dv = DataValidation(type='list', formula1='"はい,いいえ,どちらでもない"', showErrorMessage=False)
#不要 dv.error = 'リスト内の値を選択してください。'
以上でドロップダウンリスト(プルダウン)の設定は完了です。
次に、設定したドロップダウンリストをワークシートに適用していきましょう。
ドロップダウンリスト(プルダウン)の適用
ws.add_data_validation(dv)
dv.add('A1')
上記2行にてドロップダウンリストをワークシートに適用しています。
【コードの解説】
ワークシートが入った変数(今回はws)に続けて、「.add_data_validation()」を書きます。
()内には、ドロップダウンリストを設定した変数(今回はdv)を書いてください。
これでワークシートにドロップダウンリストが適用されました。
次に、適用するセルを指定します。
ドロップダウンリストを設定した変数(今回はdv)に続けて、「.add()」を書きます。
()内には適用するセル(今回はA1)を指定してください。
複数のセルに適用する場合は、「(‘A1:A5’)」というように指定できます。
適用するセルは、クォーテーションで囲ってください。
以上でドロップダウンリストの設定・適用が完了しました。
実行後に出力された「output.xlsx」を開いてみましょう。
設定どおりにドロップダウンリストが作成されています。
今度はリスト以外の値を入力してみましょう。
エラーメッセージが表示されました。
「showErrorMessage=False」にした場合は、下図のようにエラーメッセージは表示されません。
うまく動作しない場合の対処法
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlでドロップダウンリストを作成する方法を解説いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!