使用xlsxwriter(或其他包)创建Excel个特定命名的tabs,并将dataframe写入相应的tabs
Using xlsxwriter (or other packages) to create Excel tabs with specific naming, and write dataframe to the corresponding tab
我正在尝试根据不同的条件进行查询,然后在Excel 中创建单独的选项卡来存储查询结果。
例如,我想查询所有符合条件A的结果,并将结果写入名为"A"的Excel选项卡。查询结果以熊猫数据框格式存储。
我的问题是,当我想根据条件 "A"、"B"、"C"、"D" 执行 4 个不同的查询时,最后的 Excel 文件只包含一个选项卡,它对应于列表中的最后一个条件。好像之前的tab都被覆盖了
这是示例代码,其中我将 SQL 查询部分替换为预设数据框,并将选项卡名称设置为 0、1、2、3 ...,而不是默认的 Sheet1、Sheet2 ... Excel。
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),这是我预期的所有选项卡中的最后一个选项卡。
代码中有一些错误:
- xlsx 文件是直接使用 XlsxWriter 创建的,然后在 Pandas 中再次创建它来覆盖。
to_excel()
方法引用 writer
对象而不是文件路径。
save()
和close()
是一回事,不应该出现在
循环。
这是修复了这些问题的代码的简化版本:
import pandas as pd
import xlsxwriter
fileCreatePath = 'test.xlsx'
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):
df['Name'].to_excel(writer,
sheet_name=str(iCount),
startcol=0,
startrow=1,
header=None,
index=False)
writer.save()
输出:
有关使 Pandas 和 XlsxWriter 协同工作的一些详细信息,请参阅 XlsxWriter 文档中的 Working with Python Pandas and XlsxWriter。
我正在尝试根据不同的条件进行查询,然后在Excel 中创建单独的选项卡来存储查询结果。
例如,我想查询所有符合条件A的结果,并将结果写入名为"A"的Excel选项卡。查询结果以熊猫数据框格式存储。
我的问题是,当我想根据条件 "A"、"B"、"C"、"D" 执行 4 个不同的查询时,最后的 Excel 文件只包含一个选项卡,它对应于列表中的最后一个条件。好像之前的tab都被覆盖了
这是示例代码,其中我将 SQL 查询部分替换为预设数据框,并将选项卡名称设置为 0、1、2、3 ...,而不是默认的 Sheet1、Sheet2 ... Excel。
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),这是我预期的所有选项卡中的最后一个选项卡。
代码中有一些错误:
- xlsx 文件是直接使用 XlsxWriter 创建的,然后在 Pandas 中再次创建它来覆盖。
to_excel()
方法引用writer
对象而不是文件路径。save()
和close()
是一回事,不应该出现在 循环。
这是修复了这些问题的代码的简化版本:
import pandas as pd
import xlsxwriter
fileCreatePath = 'test.xlsx'
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):
df['Name'].to_excel(writer,
sheet_name=str(iCount),
startcol=0,
startrow=1,
header=None,
index=False)
writer.save()
输出:
有关使 Pandas 和 XlsxWriter 协同工作的一些详细信息,请参阅 XlsxWriter 文档中的 Working with Python Pandas and XlsxWriter。