Python Panda Dynami c запись результатов в excel - PullRequest
1 голос
/ 03 августа 2020

то, что я пытаюсь сделать здесь, - это взять все sql из Excel, выполнить их с помощью python и экспортировать данные в другой Excel под названием output.xlsx. Однако результаты перезаписывают предыдущий результат. Как мне изменить приведенный ниже код, чтобы при каждом запуске sql результат сохранялся в новой вкладке? Спасибо!

sql = excel_data_df['Query'].tolist()

i = 0
while i < len(sql):
    cursor = connection.cursor()
    stmn = (sql[i])
    print(stmn)
    cursor.execute(stmn)
    while True:
        row = cursor.fetchone()
        if row is None:
            break
            print("row is null")
        print(row)
        res2 = cursor.fetchall()
        res2=pd.DataFrame(res2)
       writer2=pd.ExcelWriter('C:\\Python\Excel\output.xlsx')
       res2.to_excel(writer2,'Sheet1')
       writer2.save()

1 Ответ

0 голосов
/ 03 августа 2020

Несколько вещей:

  • Как упоминалось в @ewong, увеличивайте значение счетчика l oop
  • Меняйте имя листа на каждом l oop
  • Откройте файл Excel перед l oop, затем сохраните его после того, как l oop закончится

Попробуйте этот код:

sql = excel_data_df['Query'].tolist()

i = 0
writer2=pd.ExcelWriter('C:\\Python\\Excel\\output.xlsx')  # open excel file
while i < len(sql): 
    cursor = connection.cursor()
    stmn = (sql[i])
    print(stmn)
    cursor.execute(stmn)   
    while True:  
        row = cursor.fetchone()
        if row is None:  
            break
            print("row is null")  # will never get here
        print(row)
        res2 = cursor.fetchall() 
        res2 = pd.DataFrame(res2)
        res2.to_excel(writer2,'Sheet' + str(ctr+1))  # create new sheet 
        ctr += 1
writer2.save()  # save full excel file
...