每张纸有多个数据框,每个工作簿有多张纸

时间:2018-11-26 19:21:07

标签: python excel pandas

我编写了一个函数,以便可以将多个数据框写入单个excel工作表,然后在一个excel工作簿中包含多个工作表。我能够实现第一部分,但不能达到第二部分。脚本运行时,它将覆盖现有的选项卡,并用新的选项卡覆盖它,这意味着每次我打开输出文件时,它只有一张,最新一张。

我一直对writer.save()函数以及何时使用它感到困惑(例如:in或我们的循环)。有什么建议吗?

<div class="form-group mb-2"> <input class="form-control" name="account_balance" type="number" placeholder="Account Balance"> </div>

2 个答案:

答案 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()
相关问题