Remove index from Label entry
There is a lot I would like to do but I am running out of time today.
There appears to be a bug report about this problem with index_col=None
according to this post.
Related bug reports: GH18792 and GH20480
What I did to get around this issue is to convert the data to a string then break it down into its components. Once I had those I could run a split() again on it to get rid of the index's.
For now here is the fix you are looking for:
Replace:
global dfM global dfB global dfQ global dfSN1 global dfSN2 dfM.set(pd.read_excel('weekexport.xlsx', sheet_name='Foaie1', header=None, usecols="D",index_col=None)) dfB.set(pd.read_excel('weekexport.xlsx', sheet_name='Foaie1', header=None, usecols="E",index_col=None)) dfQ.set(pd.read_excel('weekexport.xlsx', sheet_name='Foaie1', header=None, usecols="F",index_col=None)) dfSN1.set(pd.read_excel('weekexport.xlsx', sheet_name='Foaie1', header=None, usecols="G",index_col=None)) dfSN2.set(pd.read_excel('weekexport.xlsx', sheet_name='Foaie1', header=None, usecols="H",index_col=None))
With:
var_lst = [dfM, dfB, dfQ, dfSN1, dfSN2]for ndex, i in enumerate(['D', 'E', 'F', 'G', 'H']): final_string = '' build_list = str(pd.read_excel('weekexport.xlsx', sheet_name='Foaie1', header=None, usecols=i, index_col=None)).split('\n') for string in build_list: x = ' '.join(string.split()).split() if len(x) > 1: final_string = '{} {}\n'.format(final_string, ' '.join(string.split()).split()[1]) var_lst[ndex].set(final_string)
Results:
On further review:
There are some thing you may want to change. For example you can use global all on one line if need be. global var1, var2, var3 ...
howeve in your code global is not needed at all.
You already built your entry information dynamically so lets do the same for your labels and other vars.
I have also commented out a few lines that were not being used at all and you code appears to be still working so let me know if you have any issues.
I removed imports that were not being used and did some general cleanup of your code to more closely follow PEP8.
Revised code:
import tkinter as tkfrom tkinter import fontfrom datetime import date, datetimefrom openpyxl.styles import Alignmentfrom warnings import simplefilterfrom pandas import ExcelWriterimport pandas as pdimport openpyxldef export_excel(): # wb_sales = pd.ExcelFile("excel.xlsx") # line not used sheet_3 = pd.read_excel("excel.xlsx", sheet_name=2, dtype=str) pd.set_option('display.max_rows', 500) pd.set_option('display.max_columns', 500) pd.set_option('display.width', 500) # read_sheets_name = wb_sales.sheet_names # line not used weekenter = var.get() if weekenter == "6": writer = ExcelWriter('weekexport.xlsx') sheet_3.query("['6'] in Week").to_excel(writer, 'Foaie1', index=False) writer.save() if weekenter == "7": writer = ExcelWriter('weekexport.xlsx') sheet_3.query("['7'] in Week").to_excel(writer, 'Foaie1', index=False) writer.save() for ndex, i in enumerate(['D', 'E', 'F', 'G', 'H']): final_string = '' build_list = str(pd.read_excel('weekexport.xlsx', sheet_name='Foaie1', header=None, usecols=i, index_col=None)).split('\n') for string in build_list: x = ' '.join(string.split()).split() if len(x) > 1: final_string = '{} {}\n'.format(final_string, ' '.join(string.split()).split()[1]) var_list[ndex].set(final_string)def write_to_xlsx(): wb = openpyxl.load_workbook('excel.xlsx') sheet = wb["Productie"] # week_number = date.today().isocalendar()[1] # line not used. ws = wb.active maxim = ws.max_row + 1 for i in range(8): ws.merge_cells(start_row=maxim, start_column=i+1, end_row=maxim + 1, end_column=i+1) # A ws.merge_cells(start_row=maxim, start_column=24, end_row=maxim + 1, end_column=24) # X ws.merge_cells(start_row=maxim, start_column=25, end_row=maxim + 1, end_column=25) # Y week_number = date.today().isocalendar()[1] ws.cell(column=1, row=maxim, value=week_number) now = datetime.now() dt_string = now.strftime('%d/%m') ws.cell(column=2, row=maxim, value=dt_string) for ndex, entry in enumerate(entry_list): ws.cell(column=ndex+3, row=maxim, value=entry_list[ndex].get()) entry_list[ndex].delete(0, 'end') rows = range(1, maxim + 1) columns = range(1, 8) for row in rows: for col in columns: sheet.cell(row, col).alignment = Alignment(horizontal='center', vertical='center', wrap_text=True) wb.save("excel.xlsx")root = tk.Tk()root.title("Main Menu")root.geometry("1000x500")font_mare = font.Font(family='Helvetica', size=14, weight='bold')var = tk.StringVar()simplefilter("ignore")wb = openpyxl.load_workbook('excel.xlsx')sheet = wb["Productie"]week_number = date.today().isocalendar()[1]label_list = ['Model', 'Etapa', 'Batch', 'Cantitate', 'S/N']entry_list = []for i in range(len(label_list)): tk.Label(root, text=label_list[i]).grid(row=i, column=0, sticky='w') entry_list.append(tk.Entry(root, width=10)) entry_list[-1].grid(row=i, column=1, sticky='w')tk.Button(root, text='Submit', command=write_to_xlsx).grid(row=2, column=2, sticky='W')tk.Button(root, text='Week:', command=export_excel).grid(row=6, column=0, sticky='W')entry = tk.Entry(root, textvariable=var, width=10).grid(row=7, column=0, sticky='w')label_list_2 = ['Model', 'Batch', 'Cantitate', 'Serial', 'Number']var_list = []for ndex, i in enumerate(label_list_2): var_list.append(tk.StringVar(root)) var_list[-1].set(i) tk.Label(root, textvariable=var_list[-1], font=font_mare).grid(row=8, column=ndex, sticky="w")root.mainloop()