In: Computer Science
Python 3
Code does not save properly the data in the excel file. it
stores the data in the same row over and over
# required library import tkinter as tk from tkcalendar import DateEntry import xlsxwriter # frame window = tk.Tk() window.title("daily logs") #window.resizable(0,0) # labels tk.Label(window, text="Bar code").grid(row=0, sticky="W", pady=20, padx=20) tk.Label(window, text="Products failed").grid(row=1, sticky="W", pady=20, padx=20) tk.Label(window, text="Money Lost").grid(row=2, sticky="W", pady=20, padx=20) tk.Label(window, text="Failed date").grid(row=3, sticky="W", pady=20, padx=20) # entries barcode = tk.Entry(window) product = tk.Entry(window) money = tk.Entry(window) # arraging barcode.grid(row=0, column=1) product.grid(row=1, column=1) money.grid(row=2, column=1) cal = DateEntry(window, width=12, background='darkblue', foreground='white', borderwidth=2) cal.grid(row=3, column=1) # callback function def readValue(): excel_barcode = barcode.get() excel_product = product.get() excel_money = money.get() date = cal._date print(date) workbook = xlsxwriter.Workbook("dailylog.xlsx") worksheet = workbook.add_worksheet() worksheet.write("A1", "BARCODE") worksheet.write("B1", "MONEY") worksheet.write("C1", "PRODUCT") worksheet.write("D1", "date") worksheet.write("A2", excel_barcode) worksheet.write("B2", excel_money) worksheet.write("C2", excel_product) worksheet.write("D2", str(date)) workbook.close() cleardate() # calls cleardate() function # callback function def cleardate(): barcode.delete(0, 'end') product.delete(0, 'end') money.delete(0, 'end') # button to trigger actions button = tk.Button(text="SUBMIT", command=readValue).grid(row=4, pady=20, padx=20) button = tk.Button(text="CLEAR", command=cleardate).grid(row=4, column=1, pady=20, padx=20) window.geometry("500x400") window.mainloop()
# required library
import tkinter as tk
from tkcalendar import DateEntry
from openpyxl import load_workbook
# frame
window = tk.Tk()
window.title("daily logs")
#window.resizable(0,0)
# labels
tk.Label(window, text="Bar code").grid(row=0, sticky="W", pady=20,
padx=20)
tk.Label(window, text="Products failed").grid(row=1, sticky="W",
pady=20, padx=20)
tk.Label(window, text="Money Lost").grid(row=2, sticky="W",
pady=20, padx=20)
tk.Label(window, text="Failed date").grid(row=3, sticky="W",
pady=20, padx=20)
# entries
barcode = tk.Entry(window)
product = tk.Entry(window)
money = tk.Entry(window)
# arraging
barcode.grid(row=0, column=1)
product.grid(row=1, column=1)
money.grid(row=2, column=1)
cal = DateEntry(window, width=12, background='darkblue',
foreground='white', borderwidth=2)
cal.grid(row=3, column=1)
# callback function
def readValue():
excel_barcode = barcode.get()
excel_product = product.get()
excel_money = money.get()
date = cal._date
print(date)
data = [excel_barcode,excel_product,excel_money,date]
workbook = load_workbook("dailylog.xlsx")
worksheet = workbook.worksheets[0]
worksheet.append(data)
workbook.save("dailylog.xlsx")
cleardate()
# callback function
def cleardate():
barcode.delete(0, 'end')
product.delete(0, 'end')
money.delete(0, 'end')
# button to trigger actions
button = tk.Button(text="SUBMIT", command=readValue).grid(row=4,
pady=20, padx=20)
button = tk.Button(text="CLEAR", command=cleardate).grid(row=4,
column=1, pady=20, padx=20)
window.geometry("500x400")
window.mainloop()
Here the Working Code.
The Mistake that you'd made is choosing XLSXWRITER as that
Module Can't able to read the XLSX as it is designed to writing
XLSX.
I Found alternative to xlsx name openpyxl which has feature to
append the data(Add data at the last row)
Note: Create a XLSX file which is having Header's as there
is no default allocation for Headers adding.
And One More thing to mind it is Never open the Workbook
While running the Application. If so it'll give Permission Denied
Exception.
Thank you..
:)