Добавить несколько листов в существующий Excel, используя панды в Python - PullRequest
1 голос
/ 09 апреля 2019

Мой код читает запросы SQL из текстового файла и выполняет их один за другим в python. Я пытаюсь сохранить результат запросов в том же Excel, но в разных вкладках / таблицах

import pyodbc as hive
import pandas as pd

filename =r'C:\Users\krkg039\Desktop\query.txt'
fd=open(filename,'r')

sqlFile=fd.read()

fd.close()

# all SQL commands (split on ';')
sqlCommands = sqlFile.split(';')

# Execute every command from the input file
for command in sqlCommands:
    try:
        con = hive.connect("DSN=SFO-LG", autocommit=True)
        df = pd.read_sql(command,con)
        print(df)
        print(command)
        writer = pd.ExcelWriter('Result.xlsx')
        df.to_excel(writer, sheet_name='Test',index=False)
        writer.save()
    except:
        print("Command skipped: ")

В кодеЯ хочу, чтобы python добавлял листы к существующему Excel для каждого выполняемого SQL-запроса.

В основном Python НЕ должен заменять мой Excel каждый раз

1 Ответ

3 голосов
/ 09 апреля 2019

Я не знаю, действительно ли это проблема, но я думаю, что если вы возьмете writer = pd.ExcelWriter('Result.xlsx') вне цикла for, вы не будете каждый раз переопределять его. Также сделайте имя листов динамическим с помощью цикла, чтобы не перезаписывать его.

writer = pd.ExcelWriter('Result.xlsx')
for command in sqlCommands:
    try:
        con = hive.connect("DSN=SFO-LG", autocommit=True)
        df = pd.read_sql(command,con)
        print(df)
        print(command)
        df.to_excel(writer, sheet_name='Test'+command,index=False)
        writer.save()
    except:
        print("Command skipped: ")
...