Python Tkinter GUI to Convert CSV to Excel File Using Pandas,Pandastable and Tkintertable Library Full Tutorial

Python Tkinter GUI to Convert CSV to Excel File Using Pandas,Pandastable and Tkintertable Library Full Tutorial

 

Welcome folks today in this blog post we will be building a tkinter gui to convert csv file to excel file using pandas library. All the source code of the application is given below.

 

 

Get Started

 

 

In order to get started you need to install these libraries using pip command

 

pip install tkinter

 

pip install pandas

 

pip install pandastable

 

pip install tkintertable

 

pip install xlwt

 

 

Now create a app.py file and copy paste the following code

 

 

 

import pandas as pd 
from tkinter import *
from tkinter import filedialog 
from tkinter import messagebox as msg 
from pandastable import Table 
from tkintertable import TableCanvas 


class csv_to_excel: 

    def __init__(self, root): 

        self.root = root 
        self.file_name = '' 
        self.f = Frame(self.root, 
                    height = 200, 
                    width = 300) 
        
        # Place the frame on root window 
        self.f.pack() 
        
        # Creating label widgets 
        self.message_label = Label(self.f, 
                                text = 'GeeksForGeeks', 
                                font = ('Arial', 19,'underline'), 
                                fg = 'Green') 
        self.message_label2 = Label(self.f, 
                                    text = 'Converter of CSV to Excel file', 
                                    font = ('Arial', 14,'underline'), 
                                    fg = 'Red') 

        # Buttons 
        self.convert_button = Button(self.f, 
                                    text = 'Convert', 
                                    font = ('Arial', 14), 
                                    bg = 'Orange', 
                                    fg = 'Black', 
                                    command = self.convert_csv_to_xls) 
        self.display_button = Button(self.f, 
                                    text = 'Display', 
                                    font = ('Arial', 14), 
                                    bg = 'Green', 
                                    fg = 'Black', 
                                    command = self.display_xls_file) 
        self.exit_button = Button(self.f, 
                                text = 'Exit', 
                                font = ('Arial', 14), 
                                bg = 'Red', 
                                fg = 'Black', 
                                command = root.destroy) 

        # Placing the widgets using grid manager 
        self.message_label.grid(row = 1, column = 1) 
        self.message_label2.grid(row = 2, column = 1) 
        self.convert_button.grid(row = 3, column = 0, 
                                padx = 0, pady = 15) 
        self.display_button.grid(row = 3, column = 1, 
                                padx = 10, pady = 15) 
        self.exit_button.grid(row = 3, column = 2, 
                            padx = 10, pady = 15) 

    def convert_csv_to_xls(self): 
        try: 
            self.file_name = filedialog.askopenfilename(initialdir = '/Desktop', 
                                                        title = 'Select a CSV file', 
                                                        filetypes = (('csv file','*.csv'), 
                                                                    ('csv file','*.csv'))) 
            
            df = pd.read_csv(self.file_name) 
            
            # Next - Pandas DF to Excel file on disk 
            if(len(df) == 0):    
                msg.showinfo('No Rows Selected', 'CSV has no rows') 
            else: 
                
                # saves in the current directory 
                with pd.ExcelWriter('GeeksForGeeks.xls') as writer: 
                        df.to_excel(writer,'GFGSheet') 
                        writer.save() 
                        msg.showinfo('Excel file ceated', 'Excel File created')  
            
        except FileNotFoundError as e: 
                msg.showerror('Error in opening file', e) 

    def display_xls_file(self): 
        try: 
            self.file_name = filedialog.askopenfilename(initialdir = '/Desktop', 
                                                        title = 'Select a excel file', 
                                                        filetypes = (('excel file','*.xls'), 
                                                                    ('excel file','*.xls'))) 
            df = pd.read_excel(self.file_name) 
            
            if (len(df)== 0): 
                msg.showinfo('No records', 'No records') 
            else: 
                pass
                
            # Now display the DF in 'Table' object 
            # under'pandastable' module 
            self.f2 = Frame(self.root, height=200, width=300) 
            self.f2.pack(fill=BOTH,expand=1) 
            self.table = Table(self.f2, dataframe=df,read_only=True) 
            self.table.show() 
        
        except FileNotFoundError as e: 
            print(e) 
            msg.showerror('Error in opening file',e) 

# Driver Code 
root = Tk() 
root.title('GFG---Convert CSV to Excel File') 

obj = csv_to_excel(root) 
root.geometry('800x600') 
root.mainloop()

 

See also  Python 3 Tutorial to Test Internet Speed & Bandwidth on Command Line Using speedtest-cli Library Full Project For Beginners

 

 

Screenshots

 

 

 

 

 

 

 

 

Leave a Reply