Как прочитать правила проверки данных из листа Excel в Python?Python

Программы на Python
Anonymous
Как прочитать правила проверки данных из листа Excel в Python?

Сообщение Anonymous »

У меня есть шаблон таблицы Excel с некоторыми правилами проверки данных, которые мне нужно заполнить данными из другого источника. Мне нужно прочитать шаблон Excel-листа с помощью Python, заполнить строки, а затем записать его, сохраняя при этом правила проверки данных, которые раньше существовали в исходном листе Excel. Шаблон генерируется извне, и я не могу его контролировать, поэтому мне нужно скопировать оттуда правила проверки.
Я попробовал прочитать лист Excel как openpyxl рабочая книга, но при проверке проверки данных в ячейках все они кажутся пустыми

Код: Выделить всё

import openpyxl

def main():
wb2 = openpyxl.load_workbook('data_validation.xlsx')

ws = wb2.active
print(ws.data_validations)

if __name__ == "__main__":
main()
дает результат

Код: Выделить всё

Parameters:
disablePrompts=None, xWindow=None, yWindow=None, count=0, dataValidation=[]
где data_validation.xlsx — это заполнитель для шаблона листа Excel. В целях минимально воспроизводимого примера это может быть простой лист Excel из двух листов с проверкой раскрывающегося списка в одной из ячеек, где значения раскрывающегося списка считываются из другого листа внутри книги Excel.
Лист 1
| | A |
|:-------:|:-------:|
| 1 | Элемент 1 |
Лист 2
| | A |
|:---:|:------:|
| 1 | Пункт 1 |
| 2 | Пункт 3 |
| 3 | Элемент 3 |
с правилом проверки
Разрешить: Список
Источник: =Sheet2!$A$1:$A$3
изображение, представляющее один и тот же пример
Изображение

при чтении в книге openpyxl выдает предупреждение

Код: Выделить всё

UserWarning: Data Validation extension is not supported and will be removed
Я предполагаю, что openpyxl не поддерживает чтение уже существующих правил проверки из листа Excel? только заполнять его новыми?
если это так, есть ли другой способ прочитать правила проверки? Любая помощь приветствуется. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/786 ... -in-python

Вернуться в «Python»