#python #python-3.x #excel #validation #openpyxl
Вопрос:
Допустим, у меня есть лист Excel, который выглядит так:
Я использую openpyxl для записи некоторой проверки данных в пустые ячейки. Но чтобы применить это, мне нужно проверить, имеют ли ячейки от столбца C до D значения, и если нет, я хочу заполнить ячейки некоторой проверкой данных.
Любая идея, как я могу получить, например, вывод, что C3, C4, D3, D4, E3, E4, F3, F4 пусты, поэтому я могу использовать их для проверки ячеек.
Это код, который я буду использовать для добавления проверки данных, и именно поэтому мне нужен, например, C3:
data_val = DataValidation(type="list",formula1='=$E$3:$R$3')
ws.add_data_validation(data_val)
data_val.add(ws["C3"])
Комментарии:
1. Итак, вы хотите знать
ws["C3"]
, пусто ли оно?2. На самом деле я хочу знать все ячейки, которые пусты для столбцов C, D, E, F.
Ответ №1:
Я нашел ответ, который искал, так что это код, который я буду использовать, если он кому-то понадобится:
import openpyxl
from openpyxl.worksheet.datavalidation import DataValidation
import re
path=r'...'
wb=openpyxl.load_workbook(path)
ws = wb.active
#for Column C
for row in range(ws.max_row):
for column in "C":
cell_name = "{}{}".format(column, row 1)
value= ws[cell_name].value
if value is None:
k=re.findall(r'[A-Za-z] |d ', cell_name)
data_val = DataValidation(type="list",formula1=''=$E${0}:$R${1}')'.format(k[1],k[1]))
ws.add_data_validation(data_val)
data_val.add(ws[cell_name])
wb.save()