【问题标题】:Write DF to existing Excel file with pandas and openxlpy使用 pandas 和 openxlpy 将 DF 写入现有 Excel 文件
【发布时间】:2020-08-10 22:37:22
【问题描述】:

我正在尝试将 df 写入现有工作表。最初程序会打开一个对话框选择要添加的新工作表名称,然后找到 Excel 工作表的路径。

#reload window to select new sheet name
root = tk.Tk()
root.geometry('500x200+350+150')
root.configure(bg='#072462')

#set buttons
label_date = Label(root, text='Input New Sheet Name', bg='#072462', fg='white')
ws_new_title = Entry(root, width=45, bg='#0A1944', fg='white', highlightthickness=0, borderwidth=0)
ws_new_title.insert(0, 'YYYY-MM-DD') #insert guide text in box
button_ws_name = Button(root, width=20, text='Select Export Excel File', command=root.quit)
button_ws_name.configure(fg='#C51E42', bg='#06122f', borderwidth=5)

label_date.pack()
ws_new_title.pack()
button_ws_name.pack(pady=30)
root.mainloop()

查找excel路径的对话框代码(工作)

#find and save to new excel sheet based on a input of name
root = tk.Tk()
root.title('Great Britain Basketball')
root.withdraw()
file_path_export = filedialog.askopenfilename(initialdir='/Desktop/', title='Select Player Tracking document')
root.update()
export_fn = file_path_export

打开工作簿并添加新工作表的代码(认为这可能是错误的)

book = load_workbook(export_fn)
writer = pd.ExcelWriter(export_fn, engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

终于将 df (full_append) 写入 excel

full_append.to_excel(writer, startrow=len(df)+1, index=False, header=False, sheet_name='Season Data') #working -write to exsisting sheet and append to bottom row
full_append.to_excel(writer, sheet_name=ws_new_title, index=False) #not working - write to same sheet but on seperate sheet taking name from input
writer.save()

所以主要问题是程序没有使用规定的工作表名称(ws_new_title 变量)在工作簿中添加新工作表,并将 df 写入其中。谢谢

【问题讨论】:

    标签: python excel pandas dataframe


    【解决方案1】:

    设法找到语法错​​误。设置进入按钮后

    ws_new_title = Entry(root, width=45, bg='#0A1944', fg='white', highlightthickness=0, borderwidth=0)
    

    在现有 Excel 工作表中用作新工作表名称之前,我需要将此条目更改为字符串变量。为此,我使用了 .get() 函数

    #change entry to a string
    ws_name = ws_new_title.get()
    

    然后最后将 df 附加到“季节数据”并根据日期保存到新工作表中

    #write to excel workbook
    book = load_workbook(export_fn)
    writer = pd.ExcelWriter(export_fn, engine='openpyxl')
    writer.book = book
    writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
    
    full_data_table.to_excel(writer, sheet_name=ws_name, index=False) #working but need to update name based on input
    full_data_table.to_excel(writer, startrow=len(df)+1, index=False, header=False, sheet_name='Season Data') #working -write to exsisting sheet and append to bottom row
    
    writer.save()
    writer.close()
    

    【讨论】:

      猜你喜欢
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-13
      相关资源
      最近更新 更多