【问题标题】:Add multiple sheets in existing excel using pandas in Python在 Python 中使用 pandas 在现有 excel 中添加多个工作表
【发布时间】:2019-04-09 21:45:57
【问题描述】:

我的代码正在从文本文件中读取 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】:

    我不知道这是否正是问题所在,但我认为如果您采取 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: ")
    

    【讨论】:

    • ... 可能也不需要在循环中包含.connect
    • @Gord Thompson 知道了。在 for 循环工作之前放置 Hive.connect。谢谢
    猜你喜欢
    • 2017-08-25
    • 2018-03-22
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多