我试图通过运行动态生成的SQL并将数据存储到数据框中来导出数据,最终将数据框导出到Excel工作表中。然而,尽管我能够通过成功运行动态SQL生成不同的结果,但我无法将其导出到同一Excel文件中的不同工作表中。它最终会用最后生成的数据覆盖以前的结果。
for func_name in df_data['FUNCTION_NAME']:
sheet_name = func_name
sql = f"""select * from table({ev_dwh_name}.OVERDRAFT.""" + sheet_name + """())"""
print(sql)
dft_tf_data = pd.read_sql(sql,sf_conn)
print('dft_tf_data')
print(dft_tf_data)
# dft.to_excel(writer, sheet_name=sheet_name, index=False)
with tempfile.NamedTemporaryFile('w+b', suffix='.xlsx', delete=False) as fp:
#dft_tf_data.to_excel(writer, sheet_name=sheet_name, index=False)
print('Inside Temp File creation')
temp_file = path + f'/fp.xlsx'
writer = pd.ExcelWriter(temp_file, engine = 'xlsxwriter')
dft_tf_data.to_excel(writer, sheet_name=sheet_name, index=False)
writer.save()
print(temp_file)
我正在努力实现以下方案。
1.根据FUNCTION_NAME,它应该在现有Excel中添加一个新工作表,然后将查询中的数据写入工作表。
1.最终文件应包含所有工作表。
有什么办法吗?请建议。
1条答案
按热度按时间ilmyapht1#
如果fp.xlsx不存在,我只希望出现一次(第一次运行)找不到文件的情况。fp.xlsx在以下行中创建
如果它不存在,并且由于该行引用的是该文件,因此它必须存在,否则将出现找不到该文件的错误。一旦它存在,则应该没有问题。
我不确定创建一个临时xlsx文件的原因。我不明白为什么需要它,而且你似乎也没有使用它。
下面的代码对我来说很好用,其中fp.xlsx在运行代码之前最初保存为空白工作簿。