我尝试根据不同的条件进行查询,然后在Excel中创建单独的选项卡来存储查询结果。
例如,我想查询所有符合条件A的结果,并将结果写入名为“A”的Excel选项卡。查询结果以Pandas数据框格式存储。
我的问题是,当我想根据条件“A”,“B”,“C”,“D”执行4个不同的查询时,最终的Excel文件只包含一个选项卡,它对应于列表中的最后一个条件。
下面是示例代码,其中我将SQL查询部分替换为预设的 Dataframe ,并将选项卡名称设置为0、1、2、3 ...,而不是Excel中默认的Sheet1、Sheet2...。
import pandas as pd
import xlsxwriter
import datetime
def GCF_Refresh(fileCreatePath, inputName):
currentDT = str(datetime.datetime.now())
currentDT = currentDT[0:10]
loadExcelName = currentDT + '_' + inputName + '_Load_File'
fileCreatePath = fileCreatePath +'\\' + loadExcelName+'.xlsx'
wb = xlsxwriter.Workbook(fileCreatePath)
data = [['tom'], ['nick'], ['juli']]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns=['Name'])
writer = pd.ExcelWriter(fileCreatePath, engine='xlsxwriter')
for iCount in range(5):
#worksheet = writer.sheets[str(iCount)]
#worksheet.write(0, 0, 'Name')
df['Name'].to_excel(fileCreatePath, sheet_name=str(iCount), startcol=0, startrow=1, header=None, index=False)
writer.save()
writer.close()
# Change the file path here to store on your local computer
GCF_Refresh("H:\\", "Bulk_Load")
我在这个示例代码中的目标是有5个标签,分别命名为0、1、2、3、4,并且每个标签都打印有“tom'、”nick'和“juli'。现在,我只有一个标签(命名为4),这是我期望的所有标签中的最后一个标签。
2条答案
按热度按时间8xiog9wr1#
代码中有许多错误:
to_excel()
方法引用writer
对象,而不是文件路径。save()
和close()
是同一个东西,不应该在循环中。以下是代码的简化版本,其中修复了这些问题:
输出:
请参阅XlsxWriter文档中的Working with Python Pandas and XlsxWriter,了解有关如何让Pandas和XlsxWriter协同工作的一些详细信息。
raogr8fs2#
对于阅读本文的其他人,最好将其 Package 在contextmanager中
通过 Package 在contextmanager中,您可以确保资源(例如excel)被适当地释放