我编写了一个函数,以便可以将多个数据框写入单个excel工作表,然后在一个excel工作簿中包含多个工作表。我能够实现第一部分,但不能达到第二部分。脚本运行时,它将覆盖现有的选项卡,并用新的选项卡覆盖它,这意味着每次我打开输出文件时,它只有一张,最新一张。
我一直对writer.save()函数以及何时使用它感到困惑(例如:in或我们的循环)。有什么建议吗?
<div class="form-group mb-2"> <input class="form-control" name="account_balance" type="number" placeholder="Account Balance"> </div>
答案 0 :(得分:0)
这就是我的方法。新工作表应添加到Excel工作簿中,并且workbook
对象也应获取新工作表。
writer = pd.ExcelWriter('example.xlsx', engine='xlsxwriter')
wb = writer.book
sh = wb.add_worksheet('Sheet1')
writer.sheets['Sheet1'] = sh
sh2 = wb.add_worksheet('Sheet2')
writer.sheets['Sheet2'] = sh2
........
sh.white(...
答案 1 :(得分:0)
您正在寻找的答案与解决方案here有关,但是由于您想通过多次迭代来调用它,因此要复杂一些。我的解决方案在下面,但是请记住,如果有重复的工作表,这会变得很混乱(例如,如果存在Sheet1,并且您尝试再次添加Sheet1,它将变成Sheet11)。
import pandas as pd
import os.path
from openpyxl import load_workbook
def dfs_to_sheet(dflist, bookname, sheetname, startrow = 0):
book_file = '{}.xlsx'.format(bookname)
writer = pd.ExcelWriter(book_file, engine='openpyxl')
if os.path.isfile(book_file):
writer.book = load_workbook(book_file)
numdfs = 0
startrow = 0
for i in dflist:
if numdfs == 0:
i.to_excel(writer, sheet_name = sheetname, startrow = startrow)
elif numdfs != 0:
i.to_excel(writer, sheet_name = sheetname, startrow = startrow)
startrow = startrow + len(i) + 2
numdfs += 1
writer.save()
writer.close()