Проверьте, пусто ли значение ячейки для определенных столбцов, и если верно, поместите некоторые данные с помощью python

#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()