使用python中的pandas在现有excel中添加多个工作表

6vl6ewon  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(416)

我的代码是从文本文件中读取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为执行的每个sql查询向现有excel添加工作表。
基本上python不应该每次都替换我的excel

lf5gs5x2

lf5gs5x21#

我不知道这是否就是问题所在,但我想如果你 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: ")

相关问题