Я новичок в python и пытаюсь создать что-то, что создает некоторый код для меня в другом файле на основе данных в электронной таблице. В моем тестовом проекте все хорошо, но по какой-то причине при использовании другого файла Excel я получаю ошибку, которую не могу понять:
Traceback (most recent call last):
File "demo.py", line 76, in <module>
MakeFile()
File "demo.py", line 28, in MakeFile
step_type = sheet[f"D{row.value}"]
File "C:....\Python\Python37-32\lib\site-packages\openpyxl\worksheet\worksheet.py", line 287, in __getitem__
min_col, min_row, max_col, max_row = range_boundaries(key)
File "C:...\Python\Python37-32\lib\site-packages\openpyxl\utils\cell.py", line 137, in range_boundaries
raise ValueError(msg)
ValueError: ENone is not a valid coordinate or range
Мой код:
def MakeFile():
xl_filepath = "C:...Desktop/myfile.xlsx"
wb = load_workbook(xl_filepath)
sheet = wb.active
with open("testfile2.py", "w") as f:
f.write("some stuff before loop")
for row in sheet["A"]:
step_type = sheet[f"D{row.value}"]
if row.value is None:
print("End of Steps")
#raise Exception("Cell is blank")
else:
if step_type.value == "text":
f.write("somestuff")
print(row.value, step_type.value)
elif step_type.value == "animation":
f.write("somestuff")
print(row.value, step_type.value)
else:
f.write("somestuff")
print(row.value, step_type.value)
f.write("somestuff after the loop")
f.close()
MakeFile()
По существуцикл завершается и выполняет все, что я ожидаю, за исключением того, что в конце он выдает эту ошибку.
ValueError: ENone is not a valid coordinate or range
и не выполняет запись после, например, "somestuff after the loop". Он закрывает файл и сохраняет то, что сделал иначе ...
Пример моей рабочей книги Пример электронной таблицы
Я просматриваю столбец "A" и дляна каждом шаге (указанном числом) я беру соответствующее значение «D», а затем что-то делаю с ним в зависимости от того, «текст», «анимация» или «что-нибудь еще». Он также хорошо обрабатывает дополнительные значения, например, если в строке есть «video», тогда он идет и выполняет то, что ожидается с помощью «else».