Это логическая ошибка, когда при автоматической вставке новой строки следующая строка изменится на искомое значение, следовательно, при повторении цикла условие снова будет истинным, поэтому будет снова вставлена новая строка.
Например: у вас есть 6 строк, так что цикл for будет выполнен 6 раз, и ваше условие истинно на 4-й итерации, и вы вводите новую строку. это означает, что D изменит свое положение на 5-ую строку, и если условие снова станет True.
Вы можете преодолеть это, добавив Прерывание цикла:
import openpyxl
flag=False
wb = openpyxl.load_workbook('Test.xlsx')
sheet = wb['Sheet1']
for row in sheet.iter_rows():
for cell in row:
if cell.value == 'D':
sheet.insert_rows(cell.row, amount=1)
flag=True
break
if flag:break
else:
continue
wb.save("test.xlsx")