この記事で分かること
pythonのライブラリopenpyxl
を使用して、エクセルの任意のセルにデータの入力規則を設定する方法を、備忘録がてらご紹介します。
結論
具体的な関数は以下です。
サンプルはリスト型の入力規則を設定する方法です。
import openpyxl as xl
from openpyxl.worksheet.datavalidation import DataValidation
def create_data_validation_list(
wb: xl.Workbook, # 編集対象のブック
ws_name: str, # シート名
choices: list, # 選択肢のリスト
add_range: str # 単一セル
) -> None:
ws = wb[ws_name]
dv = DataValidation(
type="list",
formula1='"{}"'.format(','.join(choices)),
allow_blank=True,
showErrorMessage=True,
errorStyle="warning",
)
dv.add(ws["{}".format(add_range)])
ws.add_data_validation(dv)
上記の関数はこんな感じで使用します。
# 編集対象ブック開く
filepath = 'test.xlsx'
wb = xl.load_workbook(filepath)
# ブックの最初のシート名を取得
ws_name = wb.sheetnames[0]
# 入力規則の選択肢
choices = ['○', '×', '△']
# "A1"セルに入力規則を適用
create_data_validation_list(wb, ws_name, choices, "A1")
# 保存
wb.save('output.xlsx')
上記のコードを実行すると、このように "A1" セルにデータの入力規則が設定されます。
ほんのり解説
openpyxl.worksheet.datavalidation.DataValidation
クラスをインスタンス化し、任意のセルに適用(add)することで、データの入力規則を設定することができます。
今回はリスト型の入力規則を設定しましたが、エクセルには様々な種類の入力規則があります。
この種類は、DataValidation
クラスのtype
プロパティで選択することができます。
各種類の設定方法は公式ドキュメントを参照してください。
その他のプロパティに関しても記載されておりますので、軽く目を通すことをお勧めします。
さいごに
株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください:
https://www.zdh.co.jp/products-services/cloud-data/zeuscloud/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_zeuscloud_content-area