Невозможно сохранить данные в Excel из следующей записи. Первый перезаписывается. Я использую Tkinter, чтобы добавить данные в dataframe, а затем добавить в Excel - PullRequest
1 голос
/ 22 октября 2019

Я новичок в tkinter, и ниже приведен код, который я использую:

from tkinter import *
import pandas as pd 
from tkinter import ttk
from openpyxl import Workbook
from openpyxl import load_workbook
import xlsxwriter



def show_entry_fields():
    print("Fund Name: %s\nFund Symbol: %s \nIssue Date: %s \nChange Reason: %s "  (e1.get(), e2.get(),  e3.get(), e4.get()))

def submitReq():
    FundName=e1.get()
    FundSymbol=e2.get()
    IssDate=e3.get()
    ChReason=e4.get()
    df=pd.DataFrame(columns=['Fund_Name','Fund_Symbol','Issue_date','Change_reason'])
    df1=df.append({"Fund_Name":FundName,"Fund_Symbol":FundSymbol,"Issue_date":IssDate,
                           "Change_reason":ChReason}, ignore_index=True)
    book = load_workbook('ESG.xlsx',read_only=False)
    sheet = book.worksheets[0]
    startrow =sheet.max_row
    writer=pd.ExcelWriter('ESG.xlsx', engine='openpyxl',startrow=startrow)

    df1.to_excel(writer, sheet_name='ESG1')
    startrow+=1
    writer.save()

def clear_text():
    e1.delete(0, 'end')
    e2.delete(0, 'end')
    e3.delete(0, 'end')
    e4.delete(0, 'end')
    book = load_workbook('ESG.xlsx')


window = Tk()

window.title("GUI")
window.geometry('1250x900')

tab_control = ttk.Notebook(window)

tab1 = ttk.Frame(tab_control)

tab2 = ttk.Frame(tab_control)
tab3 = ttk.Frame(tab_control)

tab_control.add(tab1, text='First')

tab_control.add(tab2, text='Second')
tab_control.add(tab3, text='Third')

lbl1 = Label(tab1, text= 'Fund Name')
lbl1.grid(column=0, row=0)

lbl2 = Label(tab1, text= 'Fund Symbol')
lbl2.grid(column=0,row=3)

lbl3= Label(tab1, text= 'Issue Date')
lbl3.grid(column=0,row=5)

lbl4= Label(tab1, text= 'Change Reason')
lbl4.grid(column=0,row=7)
tab_control.pack(expand=1, fill='both')

e1 = Entry(tab1)
e1.grid(row=0, column=1)

e2 = Entry(tab1)
e2.grid(row=3, column=1)
e3 = Entry(tab1)
e3.grid(row=5, column=1)
e4 = Entry(tab1)
e4.grid(row=7, column=1)


Button(tab1, 
      text='Exit', 
      command=window.destroy).grid(row=15, 
                                column=0, 
                                sticky=W, 
                                pady=4)
Button(tab1, 
      text='Show', command=show_entry_fields).grid(row=15, 
                                                   column=1, 
                                                   sticky=W, 
                                                   pady=4)

Button(tab1, 
      text='Save', command=submitReq).grid(row=15, 
                                                   column=3, 
                                                   sticky=W, 
                                                   pady=4)

Button(tab1, text='Next', command=clear_text).grid(row=15, column=5, sticky=W, pady=4)



window.mainloop()

Я ожидаю, что код будет сохранять данные в Excel при каждом нажатии кнопки сохранения. Кто-нибудь, пожалуйста, помогите мне исправить это. Я могу добавить только первую запись. Но я хочу, чтобы каждый раз, когда я нажимал «Сохранить», данные сохранялись в таблице Excel. Заранее спасибо ...

...