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

问题描述 投票:1回答:1

我的代码是从文本文件中读取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

python excel hive pyodbc
1个回答
3
投票

我不知道这是不是问题,但我想如果你把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: ")
© www.soinside.com 2019 - 2024. All rights reserved.