top of page

xlsx em csv

Quando preciso subir um arquivo em excel para meu banco de dados, o caminho mais fácil é converter o arquivo em excel xlsx para csv. Fazer isso manualmente com 1 ou 2 arquivos antes de salvar dentro do próprio arquivo em excel, pode ser até ok, mas quando for muitos arquivos, é mais fácil ainda rodar um script em Python, segue:


import tkinter as tk
from tkinter import filedialog, messagebox
import pandas as pd

class App:
    def __init__(self, root):
        self.root = root
        self.root.title("Conversor de Excel para CSV")
        self.root.geometry("400x200")
        
        self.create_widgets()
        
    def create_widgets(self):
        self.btn_select_file = tk.Button(self.root, text="Selecionar Arquivo Excel", command=self.select_file)
        self.btn_select_file.pack(pady=20)
        
        self.lbl_file_path = tk.Label(self.root, text="")
        self.lbl_file_path.pack(pady=10)
        
        self.btn_execute = tk.Button(self.root, text="Converter para CSV", command=self.convert_to_csv)
        self.btn_execute.pack(pady=20)
    
    def select_file(self):
        # Abrir diálogo para selecionar o arquivo Excel
        self.file_path = filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx")])
        self.lbl_file_path.config(text=self.file_path)
        
    def convert_to_csv(self):
        if hasattr(self, 'file_path') and self.file_path:
            try:
                # Ler o arquivo Excel e convertê-lo para CSV
                df = pd.read_excel(self.file_path)
                csv_file_path = self.file_path.replace(".xlsx", ".csv")
                df.to_csv(csv_file_path, index=False, encoding='utf-8-sig')
                messagebox.showinfo("Sucesso", f"Arquivo convertido com sucesso: {csv_file_path}")
            except Exception as e:
                messagebox.showerror("Erro", f"Ocorreu um erro: {str(e)}")
        else:
            messagebox.showwarning("Nenhum arquivo selecionado", "Por favor, selecione um arquivo Excel.")

if __name__ == "__main__":
    root = tk.Tk()
    app = App(root)
    root.mainloop()

bottom of page