我正在尝试使用ExcelWriter替换/更新具有从另一个文件读取的数据框的excel工作簿中的工作表。如果我只是使用df.to_excel()
来写出文件,则它可以按预期工作,但是我也希望将所有其他工作表也保留在接收工作簿中。
我已经尝试了下面的代码的几次不同的迭代,但是无论我使用ExcelWriter怎么办,接收文件都不会被更新或修改。
注意: 如果有所不同,我尝试更新的工作表已经存在。也许我的tkinter小部件弄乱了该过程,但如上所述,该过程适用于简单的df.to_excel()命令。
代码:
import openpyxl
from openpyxl import load_workbook
import tkinter
from tkinter import filedialog
from tkinter import *
import xlrd
import pandas as pd
def openMasterFile():
root = Tk()
root.withdraw()
global masterfile
masterfile = filedialog.askopenfilename(initialdir = "C:\\Users\\...",
title = "Select master file", parent=root)
root.destroy()
#open new data
def openNewFile():
root=Tk()
root.withdraw()
global newfile
newfile = filedialog.askopenfilename(initialdir = "C:\\Users\\...",
title = "Select new file", parent=root)
root.destroy()
openMasterFile()
openNewFile()
data = pd.read_excel(newfile, "Partners")
book = openpyxl.load_workbook(masterfile)
with pd.ExcelWriter(masterfile, engine='openpyxl') as writer:
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
data.to_excel(writer, sheet_name="Partners", engine='xlsxwriter', index=False)
writer.save()