I see there are a few similar questions already asked, but none seem to solve my problem. Also, some offer deprecated solutions such as using coordinate.
The code I have works fine, but because I start the loop at a certain position, every time I re-run the code, it obviously starts writing from that one position. I’m looking for the most pythonic and up-to-date solution to this.
Thanks in advance for your time and help.
import openpyxl
roster = openpyxl.load_workbook('Path/To/File/roster.xlsx')
sheet = roster.active
counter = 7
while counter < 1000:
    counter +=1
    fname = input("Enter first name: ").capitalize().strip()
    lname = input("Enter last name: ").capitalize().strip()
    grade = int(input("Enter grade: "))
    attendance = int(input("Enter atendance: "))
    for row in sheet.rows:
        sheet[f'A{counter}'] = f'{counter}'
        sheet[f'B{counter}'] = fname
        sheet[f'C{counter}'] = lname
        sheet[f'D{counter}'] = grade
        sheet[f'E{counter}'] = attendance
roster.save('Path/To/File/roster.xlsx')
Advertisement
Answer
You can use max_row and append from openpyxl.worksheet.
counter = sheet.max_row
while counter < 1000:
    fname = input("Enter first name: ").capitalize().strip()
    lname = input("Enter last name: ").capitalize().strip()
    grade = int(input("Enter grade: "))
    attendance = int(input("Enter atendance: "))
    sheet.append([counter, fname, lname, grade, attendance])
    counter += 1