How to show csv file in a grid? How to show csv file in a grid? tkinter tkinter

How to show csv file in a grid?


You can use reader from the python csv module to read the file. Reader takes a .csv file as input, and can then be iterated over like a table. I've included code, a sample .csv file, and my result.

Code:

import tkinterimport csvroot = tkinter.Tk()# open filewith open("test.csv", newline = "") as file:   reader = csv.reader(file)   # r and c tell us where to grid the labels   r = 0   for col in reader:      c = 0      for row in col:         # i've added some styling         label = tkinter.Label(root, width = 10, height = 2, \                               text = row, relief = tkinter.RIDGE)         label.grid(row = r, column = c)         c += 1      r += 1root.mainloop()

CSV File:

col1,col2,col3thing1,thing2,thing3hi,hey,hello

Result:


Instead of Label use treeview like this, it will be more efficient.

from tkinter import *import tkinter.ttk as ttkimport csvroot = Tk()root.title("Python - Import CSV File To Tkinter Table")width = 500height = 400screen_width = root.winfo_screenwidth()screen_height = root.winfo_screenheight()x = (screen_width / 2) - (width / 2)y = (screen_height / 2) - (height / 2)root.geometry("%dx%d+%d+%d" % (width, height, x, y))root.resizable(0, 0)TableMargin = Frame(root, width=500)TableMargin.pack(side=TOP)scrollbarx = Scrollbar(TableMargin, orient=HORIZONTAL)scrollbary = Scrollbar(TableMargin, orient=VERTICAL)tree = ttk.Treeview(TableMargin, columns=("Employye ID", "Name", "Date",'Registration Time'), height=400, selectmode="extended",                    yscrollcommand=scrollbary.set, xscrollcommand=scrollbarx.set)scrollbary.config(command=tree.yview)scrollbary.pack(side=RIGHT, fill=Y)scrollbarx.config(command=tree.xview)scrollbarx.pack(side=BOTTOM, fill=X)tree.heading('Employye ID', text="Employye ID", anchor=W)tree.heading('Name', text="Name", anchor=W)tree.heading('Date', text="Date", anchor=W)tree.heading('Registration Time', text="Time", anchor=W)tree.column('#0', stretch=NO, minwidth=0, width=0)tree.column('#1', stretch=NO, minwidth=0, width=120)tree.column('#2', stretch=NO, minwidth=0, width=120)tree.column('#3', stretch=NO, minwidth=0, width=120)tree.column('#3', stretch=NO, minwidth=0, width=120)tree.pack()with open('./RegisteredEmployees/RegisteredEmployees.csv') as f:  reader = csv.DictReader(f, delimiter=',')  for row in reader:    emp_id = row['Employye ID']    name = row['Name']    dt = row['Date']    ti = row['Registration Time']    tree.insert("", 0, values=(emp_id, name, dt,ti))root.mainloop()

I just initialize Treeview, the with csv module I read csv and insert column and rows data in treeview.

ResultSee the result here