¿Cómo agregar datos usando openpyxl python para excel un archivo de una fila específica?

Tengo diferentes variables de la lista de Python (datos1, datos2, datos3 ect) que contienen datos que quiero colocar en una hoja de Excel ya existente. Actualmente mi bucle va así.

for row, entry in enumerate(data1,start=1): st.cell(row=row, column=1, value=entry) work.save('sample.xlsx') for row, entry in enumerate(data2,start=1): st.cell(row=row, column=2, value=entry) work.save('sample.xlsx') for row, entry in enumerate(data3,start=1): st.cell(row=row, column=3, value=entry) work.save('sample.xlsx') for row, entry in enumerate(data4,start=1): st.cell(row=row, column=4, value=entry) work.save('sample.xlsx') for row, entry in enumerate(data5,start=1): st.cell(row=row, column=5, value=entry) work.save('sample.xlsx') for row, entry in enumerate(data6,start=1): st.cell(row=row, column=6, value=entry) work.save('sample.xlsx') for row, entry in enumerate(data7,start=1): st.cell(row=row, column=7, value=entry) work.save('sample.xlsx') 

Una vez que mi script de Python se ejecute, almacenará los datos de la primera fila. Si vuelvo a ejecutar el script, quiero que los nuevos datos estén por debajo de los datos disponibles.

¿Cómo hacerlo?

Intenta usar

 sheet.max_row 

devolverá el último valor de la fila. Puede comenzar a escribir los nuevos valores desde aquí.

 max = ws.max_row for row, entry in enumerate(data1,start=1): st.cell(row=row+max, column=1, value=entry) 

Espero que ayude. Feliz encoding 🙂

openpyxl tiene muchos métodos diferentes para ser precisos, pero ws.append en las respuestas anteriores es lo suficientemente fuerte como para responder a sus demandas. Tenga en cuenta que ha escrito sus datos en un nuevo sample.xlsx :

 from openpyxl.workbook import Workbook headers = ['Company','Address','Tel','Web'] workbook_name = 'sample.xlsx' wb = Workbook() page = wb.active page.title = 'companies' page.append(headers) # write the headers to the first line # Data to write: companies = [['name1','address1','tel1','web1'], ['name2','address2','tel2','web2']] for info in companies: page.append(info) wb.save(filename = workbook_name) 

Ahora, para agregar nuevas líneas, primero debe abrir un libro existente con load_workbook :

 from openpyxl import load_workbook workbook_name = 'sample.xlsx' wb = load_workbook(workbook_name) page = wb.active # New data to write: new_companies = [['name3','address3','tel3','web3'], ['name4','address4','tel4','web4']] for info in new_companies: page.append(info) wb.save(filename=workbook_name) 

ws.append() siempre agregará filas debajo de los datos existentes.